【发布时间】:2021-03-30 20:56:32
【问题描述】:
谁能解释这种行为?
我有三个嵌套元素:一个容器div、一个子容器div 和一个“形状/图像”div。标记如下:
<html>
<div class="container">
<div class="subcontainer">
<div class="shape"></div>
</div>
</div>
</html>
当我将transform: translateZ() 应用于形状时,显然只有在其中一位父母应用了一些perspective 时它才会起作用。它不一定是直接父级,它可以是父级的父级div(容器)。当容器有perspective 时,形状在z 方向上移动很好。但是,当子容器(父容器)在 transform 中包含 unset 以外的内容时,形状中的 translateZ() 将被完全忽略。当然,将perspective 应用于直接父级会使形状中的translateZ() 起作用,但我想了解父级transform 中的什么阻止了形状中的perspective:
以下作品:
.container{
perspective: 1000px;
}
.subcontainer{
transform: unset; // <- or if this is not present at all
}
.shape{
transform: translateZ(300px);
}
以下不起作用:
.container{
perspective: 1000px;
}
.subcontainer{
transform: scale(1.001);
}
.shape{
transform: translateZ(300px); // <- this is fully ignored
}
这里是 codepen 中的this example。
编辑:
在许多文档中,我读到 perspective 必须是父元素中设置的属性。但MDN 似乎表明它实际上可以在transform 规则内的预期元素本身中设置。那么,父级中的perspective: 500px 是否等于子级中的transform: perspective(500px)?
【问题讨论】:
标签: html css css-transforms perspective