繁体   English   中英

React - JavaScript:如何在 Google 地图顶部正确定位下拉菜单

[英]React - JavaScript: How to properly position a dropdown menu on top of a Google Map

我一直试图在我的谷歌地图的特定位置放置一个dropdown菜单,具体在右上角(或左上角也可以)。 以下是我目前得到的:

错误

以下是预期结果:

正确的

编辑

尝试后margin-top: 100px; combobx 会向下移动,但如果我输入margin-bottom: 500px; 下拉菜单保留在中心(原点所在的位置)。 同样是如果我输入margin-left: 500px下拉菜单会向右移动,但如果我输入margin-right: 500px下拉菜单不会移动到比原点更远的地方。 似乎唯一允许的运动是向下和向左,而不是向上和向右。 在屏幕下方:

锚

我使用的代码如下:

谷歌地图.js

import React from 'react';
import styled from 'styled-components';
import GoogleMapReact from 'google-map-react';
import { Card, CardImg, CardText, CardBody, CardTitle, /*CardSubtitle,*/ Button } from 'reactstrap';
import ShipTracker from '../components/ShipTracker';

const MapContainer = styled.div`
    display: grid;
    grid-template-columns: 2fr 1fr;
    grid-template-rows: 1fr 200px;
    grid-gap: 10px;
    height: 100vh;
    grid-template-areas: "google-map   sidebar" "ship-tracker sidebar";

    .google-map {
        background: #424242;
        grid-area: google-map;
        position: relative;
        height: 100%;
        width: 100%;
    }
    .map-sidebar {
        background: #9dc183;
        grid-area: sidebar;
    }
    .ship-tracker {
        grid-area: ship-tracker;
    }
`;

var expanded = false;
function showCheckboxes() {
// show checkboxes
}

const BoatMap = () => (
    <div className="google-map">
        <GoogleMapReact
            bootstrapURLKeys={{ key: 'My_KEY' }}
            center={{
                lat: 42.4,
                lng: -71.1
            }}
            zoom={11}
        >
            {/* Insert components here */}
            <form>
                <div class="multiselect">
                    <div class="combo-companies" onClick={showCheckboxes}>
                        <select>
                            <option>Select an option</option>
                        </select>
                        <div class="overSelect" />
                    </div>
                    <div id="checkboxes">
                        <label for="one">
                            <input type="checkbox" id="CD" />Marker-1
                        </label>
                        <label for="two">
                            <input type="checkbox" id="DJ" />Marker-2
                        </label>
                        <label for="three">
                            <input type="checkbox" id="DT" />Marker-3
                        </label>
                    </div>
                </div>
            </form>
        </GoogleMapReact>
    </div>
);

谷歌地图.css

.combo-companies {
    position: absolute;
    height: 34px;
    width: 10%;
    font-size: 16px;
    border: 1px solid #111;
    border-radius: 3px;
    left: 15px;
    top: 15px;
    z-index: 2000;
}

.multiselect {
    width: 200px;
}

.selectBox {
    position: relative;
}

.selectBox select {
    width: 100%;
    font-weight: bold;
}

.overSelect {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
}

#checkboxes {
    display: none;
    border: 1px #dadada solid;
}

到目前为止我所做的:

1) 我使用CSS Grid Layout来确定 google-map 应该在哪里。 在那之后并再次阅读整个文档,我确定了网格的位置。 所以这里这里应该很好。

2)我认为主要问题可以通过在组件上使用relativeabsolute参数来确定,因为我阅读了一些像这样这样的帖子。 虽然有用,但我无法弄清楚问题所在。

3)我知道我已经接近解决方案了,因为唯一剩下的就是渲染并且遇到这个有用的帖子并认为这可能是我的解决方案,但事实并非如此。

感谢您指出解决此问题的正确方向。

在 GoogleMap.css 中试试这个

.multiselect{
width: 200px;
position: absolute; /*Also try relative if this doesn't work */
margin: 2vh 50vw auto auto;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM