我有一个带数百个地图标记的传单地图。 由于地图拥挤,其中一些地图标记位于其他标记之下。
用户希望某些类型或标准的标记出现在地图上标记“堆栈”的顶部。
通过调整每个标记元素的Z索引很容易做到这一点。
标记元素当前在CSS之下具有此元素,它是由Leaflet.js在构建/填充阶段循环生成的:
/* Constructed by Leaflet 1.7 */
element {
margin-left: -10px;
margin-top: -20px;
width: 25px;
height: 30px;
transform: translate3d(551px,252px,0px);
z-index: 58;
outline: currentcolor none medium;
}
z-index的值是一个标记的计数器,因此该标记为数字58, next 标记(无论其在地图上的位置如何)都具有z-index: 59;
,等
以下是一个示例差异,其中包含手动编辑的z-index;
以上;一些红色的针脚隐藏在蓝色的针脚后面。这些将需要提升为更加可见。
以上;通过z-index编辑将红色图钉提升到其他图钉之上,但同时保持彼此堆叠(升序)。。
但是,由于标记的数量是可变的,因此z-index
的值也是可变的。我当然可以使用javascript更新所有这些内容,而且几乎可以肯定,这是必须要做的,但是我很好奇是否:
是否有CSS方法(仅)基于其当前值来相对更新z-index
值?
例如; “推广”此标记可以是z-index: calc(<current_value> + 200);
但是,我找不到捕获CSS索引当前值的纯CSS方法。大多数“计算”当前值使用100%,但Z-index不使用百分比。
为什么我们不能将其设置为较高的数字?
使用某个任意的较高的总体捕获值将无法获得理想的结果,因为例如将z-index
设置为9999
意味着所有选定的标记元素都将具有相同的z索引。标记是从数据库数据中输出的,并且以某种方式排序(在这种情况下,是通过 date 进行排序),因此,被“提升”的标记组仍应彼此相对,同时被提升为z-index
的附加值,高于其他不在组中的人。