【发布时间】:2021-08-12 07:36:48
【问题描述】:
目前我正在尝试在我的地图组件上复制此网站的悬停效果:http://www.francoisrisoud.com/projects 基本上,当您将鼠标悬停在一个点上时,它会显示一个全屏图像,当您单击它时,它会带您到特定页面。目前这是我的 React 和 CSS 代码:
export default function Map({posts}) {
const [viewport, setViewport] = useState({
latitude: 36.592206968562685,
longitude: 3.332469343750031,
width:"100%",
height:"100vh",
zoom: 1.3,
});
const [selectedProperty, setSelectedProperty] = useState(null)
return (
<div>
<ReactMapGL {...viewport} mapboxApiAccessToken="//myAPIkey"
mapStyle="mapbox://styles/jay/cks5xkaa892cp17o5hyxcuu0z"
onViewportChange={viewport => {
setViewport(viewport);
}}>
{
posts &&
posts.map((maps) => (
<Marker key={maps.id} latitude={maps.Latitude} longitude={maps.Longitude}>
{/* <div>{maps.Title}</div> */}
<button className="marker-btn" onClick={e => {
e.preventDefault();
setSelectedProperty(maps);
}}>
<img src="placeholder.svg"/>
</button>
</Marker>
))}
{selectedProperty ? (
<Popup latitude={selectedProperty.Latitude} longitude={selectedProperty.Longitude}
onClose={() => {setSelectedProperty(null);}}>
<h1>{selectedProperty.Title}</h1>
</Popup>) : null}
</ReactMapGL>
</div>
);
}
CSS:
.marker-btn{
background: none;
border: none;
cursor: pointer;
}
.marker-btn :hover{
background: #000;
width: 100vw;
height: 100vh;
border: none;
cursor: pointer;
}
.marker-btn img{
width: 20px;
height: 20px;
}
但是当我将鼠标悬停在地图中的标记上时,我得到的结果是:
我想要它覆盖我的整个地图,而不仅仅是从我悬停的地方开始。此外,如果我将鼠标悬停在它上面,我希望它消失,但是当我将光标拖向大弹出窗口时,它不会消失。
【问题讨论】:
标签: html css reactjs react-map-gl