【发布时间】:2021-11-26 20:37:06
【问题描述】:
我有两个 div 元素:一个是旋转的父元素,另一个是我需要不受父元素旋转影响的子元素。
为了实现这一点,我尝试以与父元素相反的方向旋转子元素。这在某些情况下有效。例如,如果我像这样旋转元素...
.parent {
transform: rotate(30deg);
}
.child {
transform: rotate(-30deg);
}
... 子元素将显得笔直且不变形。但是如果我用 rotateX ...
旋转它们.parent {
transform: rotateX(30deg);
}
.child {
transform: rotateX(-30deg);
}
...子元素看起来仍然相当扭曲。
实际代码同时使用 rotateX 和 rotateZ 以使父元素看起来是等距的。目前看起来是这样的:
.happy_parent {
width: 100px;
height: 100px;
background-color: green;
transform: rotate(30deg);
}
.happy_child {
width: 50px;
height: 50px;
background-color: yellow;
transform: rotate(-30deg);
}
.sad_parent {
width: 100px;
height: 100px;
background-color: green;
transform: rotateX(-60deg) rotateZ(45deg);
}
.sad_child {
width: 50px;
height: 50px;
background-color: yellow;
transform: rotateX(60deg) rotateZ(45deg);
}
<div class="happy_parent">
<div class="happy_child"></div>
</div>
<div class="sad_parent">
<div class="sad_child"></div>
</div>
请注意,上面的 div 都正确渲染了,但下面的 child-div 仍然失真。
我在这里错过了什么?
【问题讨论】:
-
您正在 3D 方向旋转。所以现在它不仅可以通过向 -ve 方向旋转来工作
-
您必须颠倒
rotation和-vedeg的顺序。像父母一样,您rotateX先于Z现在在孩子中,您必须先rotateZ而不是X。可以尝试去掉transform-style: preserve-3d看看效果
标签: html css rotation transform