【发布时间】:2019-09-27 16:45:35
【问题描述】:
我有一个相当简单的交互式地图,上面有一堆“图钉”,悬停在上面时会显示相应的“标签”。
CSS(无关属性省略):
#map { position: relative; }
.map-pin { display: block; position: absolute; }
.map-tag { float: left; left: 20px; opacity: 0; pointer-events: none; position: absolute; }
.map-pin:hover .map-tag { opacity: 1; pointer-events: all; }
HTML(出于显而易见的原因只包含一个 pin div):
<div id="map">
<div id="map-pin-1" class="map-pin">
<div class="map-tag"></div>
</div>
</div>
问题是标签,尽管给了它们足够高的 z-index 值,但不会出现在所有其他引脚之上。似乎它们只会出现在 DOM 中特定标签上方的引脚上方。例如,#map-pin-3 .map-tag 将出现在 #map-pin-1 和 #map-pin-2 上方,但 #map-pin-4 将出现在标签上方。
有什么建议吗?
【问题讨论】:
-
我意识到其他pin出现在标签上方的原因是.map-pin div的高度和宽度设置为20px。这样做是为了防止大 div 阻止其他引脚悬停。我直接在
.map-pin内插入了一个锚点,作为.map-tag的兄弟,并将其设置为20x20(.map-pin设置为自动),因此当.map-pin a悬停时,标签出现,而不是整个div。如果我增加 div 大小,它会覆盖其他引脚,但会阻止它们悬停。如果我减少它,它允许引脚悬停,但引脚出现在 div 上方。
标签: css css-position z-index