html - iframe 通过 CSS 3D 变换忽略 Z 顺序
问题描述
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="root">
<div id="center">
<div class="transform1">
<div style="display: inline-block; background-color: red; width: 400px; height: 200px; transform: translate3d(-200px, -100px, 0)"></div>
</div>
<div class="transform2">
<div style="display: inline-block; background-color: green; width: 400px; height: 200px; transform: translate3d(-400px, -100px, 0)"></div>
</div>
<div class="transform2">
<iframe style="transform: translate3d(0, -100px, 0)" width="400" height="200" src="https://www.youtube.com/embed/aMDFhjpMTEY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</div>
</div>
<style>
#root {
position: relative;
perspective: 400px;
height: 800px;
overflow: hidden;
}
#center {
transform-style: preserve-3d;
transform: translate3d(50%, 50%, 0);
height: 100%;
}
#center > * {
position: absolute;
}
.transform1 {
transform-style: preserve-3d;
transform: translate3d(0, 0, 200px);
}
.transform2 {
transform-style: preserve-3d;
transform: translate3d(0, 0, 100px);
}
</style>
</body>
</html>
我认为,transform2 中的 div 和 iframe 应该是一样的。像这样。
但我可以看到这样的结果:
iframe 通过 CSS 3D 变换忽略 Z 顺序。即使在 iframe 之间。为什么他们忽略 Z 顺序?我该如何解决?
解决方案
事实上,您不会在代码中使用 z-order。
translate3d 用于数学转换,因此 'tz' 参数会产生缩放效果,而不是您所期望的不同元素之间的 z 顺序。
此外,放置红色 div 修改了 html 代码顺序,因此它使红色 div 高于其他 div。
推荐阅读
- mongodb - mongodb atlas 自动创建不存在的集合
- wordpress - Route53 一条记录不起作用。Wordpress 网站被黑
- javascript - 了解 JavaScript 中的事件处理程序
- javascript - 烧瓶不向js发送数据
- scala - 如何在 Scala Spark 中使用窗口滞后来寻找变化
- python - 运行具有不同参数的相同函数的python多处理都停止了,除了最后一个
- scala - 如何在具有两个元素的 Set[(String, String)] Set[Tuple] 上添加过滤器
- python - 从射线中工作节点中的远程函数获取日志的正确方法
- javascript - 关闭所有打开的手风琴 Bootstrap 的按钮
- class - Flutter 中的颜色和颜色类