我有一个带有不同标记的Map,而且据我所知,标记是按其显示顺序渲染的,这意味着标记3位于标记1和2之上。我使用的是带有mapblibre-gl和React的React Map Gl(typescript)我没问题,但如果我悬停一个标记,我希望悬停的标记在顶部(当与另一个标记重叠时)。我尝试了z轴,但它根本不工作。
制造商:
<Marker latitude={station.lat} longitude={station.lng} key={station.id} >
<div className='locDot'>
<div className='priceTag'>
<span id="brand">{station.brand ? station.brand : 'freie Tankstelle'}</span>
<span id="price">{price}</span>
</div>
</div>
</Marker >
然后将此标记推入数组中,并作为许多标记的组件返回。
CSS:
.locDot{
/* position: absolute; */
height: 12px;
width: 12px;
display: flex;
justify-content: center;
align-items: flex-end;
background-color: #1E90FF;
border: 2px solid #fff;
border-radius: 100%;
/* z-index: 1; */
}
.priceTag{
/* position: relative; */
display: flex;
flex-direction: column;
background-color: #1E90FF;
padding: 4px 6px;
font-size: 1rem;
font-weight: 400;
color: white;
margin-bottom: 18px;
border-radius: 5px;
/* line-height: 1rem; */
z-index: 1;
}
.priceTag:hover{
position: absolute;
border: 5px solid red;
z-index: 5;
}
山德士:codesandbox.io/s/vigorous-mahavira-gxk6wj?file=/src/App.tsx
2条答案
按热度按时间yzuktlbb1#
您需要将zIndex应用到标记本身,您可以通过添加
className
或内联样式来实现这一点。我已经用solution更新了codesandbox,基本上我们将Map简单数组并返回标记,基于标记索引,我们将设置活动状态,然后在标记内联样式中检查当前的activeIndex。如果您将鼠标悬停在该div上,将activeIndex设置为它的索引。
但是正如我所说的,这可以简单地通过被动
active
className然后将其指定为z-index: 1
来实现这是codesandbox
332nm8kg2#
这将是我在stack上的第一个答案,所以我希望我能满足要求。在尝试了许多方法之后,结果发现使用css的解决方案可能更简单。使用与问题相同的设置:
在您的App.css中