【发布时间】:2015-11-11 12:43:36
【问题描述】:
我将在我的问题开始前说,我并没有专门与这里的“z”解决方案结婚,但我不确定还有什么可以工作。
任务:在页面顶部附加一个遮罩元素(固定、不透明度 0.5 等...),然后定位页面中的单个元素并强制它显示在那个面具的顶部。这样做的目的是突出显示集成到页面中的特定元素以进行演示。
限制:没有提前定义强制置顶的元素,页面上的任何元素都应该是可行的目标。
目标元素的父元素将有几个可能的 z-index 值,所有这些值都将低于掩码的 z,并且都不能更改。递归循环遍历所有父级并设置临时 css 样式是行不通的,因为它会破坏过程中的许多其他内容。
最好只使用 Css 的解决方案,虽然需要一点 js 就可以了。
想法:我最有希望的想法是使用 translateZ(或其他 3dTransform 类型样式)将单个元素强制置于所有未转换内容(包括蒙版)的顶部,但到目前为止还没有让它工作。
我还考虑克隆目标元素,从目标中收集位置和样式值,然后将克隆渲染到蒙版顶部。这似乎有点笨拙(而且有点恶心),我不确定它的防弹性如何。
到目前为止,我读过的所有其他解决方案都涉及重新排序 dom、更正父级上的位置或 z-index 样式,或者只是向目标添加缺少的位置样式……这些都不是此处适用的解决方案。
【问题讨论】:
-
z-index和 z 变换(例如translateZ)是不相关的。增加z-index可以工作。提供示例代码。 -
需要 Javascript:克隆您的元素,将其添加为遮罩叠加层的子元素,然后将其在页面上的位置设置为与原始元素的位置相同。
-
+1 两次。克隆它...或在发送到顶部的元素的父元素上管理临时 z-index-es(存储它们的当前状态 - 位置和 z-index - 然后给他们所需的 z-index 并使它们恢复到原始状态,某事那样)。如果克隆,还要注意可访问性:元素是否可聚焦,页面是否仍然可以通过键盘仅以元素的自然顺序使用,还是需要像模态一样对待?
标签: css dom z-index css-transforms