17

例如,有 2 个 div 的绝对定位,可以通过将第一个 div 的 z-index 设置为高于第二个的 z-index 将第一个 div 放在第二个上。我们可以使用 translateZ() 或 translate3d 实现这种行为吗?

4

2 回答 2

22

三年后的现在答案是,你可以。您需要transform-style: preserve-3d;在父级上使用,但有可能.

.container {
  transform-style: preserve-3d;
}
.test1 {
  width: 500px;
  height: 500px;
  background: red;
  transform: translate3d(0, 0, 1px);
}
.test2 {
  width: 500px;
  height: 500px;
  background: green;
  left: 250px;
  top: 250px;
  position: absolute;
  transform: translate3d(0, 0, 0);
}
<div class="container">
  <div class="test1">
    test
  </div>

  <div class="test2">
    test #2
  </div>
</div>

于 2016-04-07T11:28:38.167 回答
4

简短的回答:。查看截至发布时有效的演示

更长的答案:不应该这样,但有时,例如当一个元素具有变换而其兄弟元素没有变换时,某些浏览器不能很好地处理这种情况,导致 z-index 被忽略。

但是,通常这是因为transform应用了 本身,而不是因为translateZ. 在这种情况下的解决方案是提供所有相关元素transform: translate3d(0px, 0px, 0px)或类似的东西,这使得浏览器更仔细地呈现元素

于 2014-01-24T18:45:51.767 回答