【发布时间】:2021-01-08 22:23:56
【问题描述】:
我有一张带有数百个地图标记的传单地图。 由于地图拥挤,其中一些地图标记位于其他标记下方。
用户希望某些类型或标准的标记出现在地图上标记“堆栈”的顶部。
这很容易通过调整每个标记元素的 Z-index 来完成。
标记元素目前在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 的方法来捕获 Z-index 的当前值;大多数“计算”当前值使用 100%,但 Z-index 不使用百分比。
为什么我们不能将它设置为一个较高的数字?
使用任意高的 catch-all 值不会给出理想的结果,因为例如,将 z-index 设置为 9999 意味着所有选定的标记元素将具有相同的 z-index。标记是从数据库数据中输出并以某种方式排序(在本例中,按日期),因此“提升”的标记组仍应彼此相对,同时被提升到他们的z-index 的附加值高于那些不在组中的人。
【问题讨论】:
标签: css leaflet z-index css-calc