transform: scale()
)容器,里面有一个视频和其他元素。在某些缩放比例下,具有高z-index的绝对定位元素会消失并且不再出现。如何解决这个问题? 请注意,我不能给视频元素一个负的z-index,并且我需要使用
overflow: hidden;
。
示例
我制作了一个示例,可以将最外层容器放大和缩小。在特定的缩放值下,类名为.on-top
(文本为"I should always be on top."
)的元素会消失。当再次缩小时,它突然出现。链接到示例:https://jsfiddle.net/iafiawik/Lcox1ecc/
结论
- 看起来元素的大小很重要。我把它做得越大,消失前的比例值就越大。
- 我也测试过直接在元素上使用CSS设置
transform: scale(1.4)
,行为是相同的。
如果我:
- 用div替换视频标签
- 从
.on-top
的兄弟姐妹(即.below
)中删除position: absolute;
- 从
.content
中删除overflow: hidden;
- 将
.on-top
移动到文档流中的视频标签之后
(但当然,由于项目特定原因,这些解决方法都对我不起作用。我也不能给视频元素一个负的z-index,而且我需要使用overflow: hidden;
。)
社区提出的解决方法(感谢!)
- 给视频标签一个负的z-index(我无法这样做,因为有时我会在视频后面放置元素)
- 删除
overflow: hidden;
(我不能删除overflow: hidden;
)
浏览器
我在Chrome(Mac)和Safari(Mac)中看到了这个问题。
更新1
看起来这个错误报告基本上涵盖了我的问题。然而,它没有提供解决方法。
更新2
我通过提供自己的解决方案回答了自己的问题。
更新3
有很多答案都修改了视频的z-index
或者给.on-top
元素添加了translateZ
。演示表明这两种方法都可以解决这个问题。但是,由于我的HTML结构是从可视化HTML编辑器输出的(长话短说...),我不知道哪些元素会在那里,或者它们是否应该在视频的前面、后面或旁边。因此,我正在寻找一种不需要更改缩放元素内部各个元素的解决方案。
overflow: hidden;
,而这似乎是我的问题所在(当与position: relative;
或position: absolute;
结合使用时)。 - iafiawik