如何解决在滚动其父元素之前,Firefox 可能无法显示具有 CSS 透视图的元素
在 Firefox 中,在滚动其父元素之前,透视显示的元素可能无法正确显示。要查看这一点,请在 Firefox 中测试此问题末尾的代码段。
在 Chrome 和 Opera 中,中央红色 #rect
元素完整显示。在 Firefox 中,只有右下象限出现,直到您开始滚动 main
元素。
您还可以在 jsfiddle 中打开代码段,在那里将 transform
元素的 CSS 中的 #rect
行注释掉会更容易,然后重新运行代码.
自己检查:
- 当
translateZ(1.8px)
应用于红色#rect
时,右下角只显示矩形的一个小角 - 如果应用了小于约
translateZ
的(4.5px)
,则 rect 最初根本不会出现 - 当
translateZ
大于(5px)
时,整个矩形正确显示,就像translateZ(0)
已应用。
问题:这里发生了什么?有没有办法解决这个怪癖?
body {
margin: 0;
}
main {
width:100vw;
height:100vh;
perspective: 10px;
overflow-x: auto;
}
div {
position: absolute;
background-color: #f00;
}
#horizontal {
width: 150vw;
height: 1px;
top: 50%;
}
#vertical {
width: 1px;
height: 100%;
left: 50vw;
}
#rect {
height: 10%;
width: 10%;
top: 45%;
left: 45%;
opacity: 0.75;
transform: translateZ(5px); /* fully visible */
transform: translateZ(4px); /* Not shown */
transform: translateZ(1.8px); /* only bottom right corner visible */
transform: translateZ(1px); /* only bottom right quadrant visible */
/* transform: translateZ(0px); */ /* fully visible */
}
<main>
<div id="horizontal"></div>
<div id="vertical"></div>
<div id="rect"></div>
</main>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。