避免 Child 元素的 3D 变换

Avoid 3D transform of Child element

我有一个经过 3D 转换的 parent DIV 和一个包含标记图像的 child 元素。标记图像继承了 parent 的 属性 并且也以相同的方式进行了 3D 转换。我希望 child div 完全没有转换。

我在 child 上尝试了各种转换来对抗它从 parent 获得的转换,但无法做到。

这里是link转JSFiddle

JSFiddle

我正在使用此转换来获得地板的 3D 外观

transform: rotateX(70deg)rotateZ(-35deg);

我需要标记在没有变换的情况下看起来,以便它看起来直接放置在变换后的 3D 平面上。提前致谢。

为了更容易使用,我建议使用外部相对定位 div 并将 2 个内部 div 与绝对位置重叠。

.cont {
  position:relative;
}
.parent {
    position: absolute;
    background-color: yellow;
    width: 200px;
    height: 150px;
    top:0;
    left:0;
    transform: rotateX(70deg)rotateZ(-35deg);
    margin: 70px;
}

.child {
    position: absolute;
    top: 90px;
    left: 100px;
    width: 70px;
    height: 50px;
}
<div class="cont">
  <div class="parent">
  </div>
  <div class="child">
        <img style="width:60px;height:60px;" src="https://cdn0.iconfinder.com/data/icons/android-icons/512/location-01-512.png"/>
  </div>
</div>

JSFiddle

首先,使用 transform-style: preserve-3d 允许 parent 的 3D 变换延续到 child 的:

.parent {
    transform: rotateX(70deg) rotateZ(-35deg);
    transform-style: preserve-3d;
}

现在,以中心底部为锚点,对child进行逆向变换

.child {
    transform: rotateZ(35deg) rotateX(-70deg);
    transform-origin: center bottom;
}

确保图像容器的尺寸与图像的尺寸相匹配,否则原点将不准确。