html - 为什么 "z-index"不适用于具有转换 : translateY() 的元素

标签 html css transform

下面是片段:

.up {
  background-color: red;
  height: 100px;
  z-index: 100;
}
.down {
  background-color: yellow;
  height: 100px;
  width: 50%;
  margin: 0 auto;
  z-index: 1;
  transform: translateY(-50%);
}
<div class="up"></div>
<div class="down"></div>

可以看出,.up 元素的 z-index 高于 .down 元素。但是,.down 元素仍然以某种方式位于 .up 元素的前面。

有人对此有想法吗?如何解决这个问题?

最佳答案

  1. 要使 z-index 起作用,position 必须应用为 absoluterelativefixed 。在 .down 元素中添加 position: relative;
  2. 由于没有父子层次结构,因此应应用负 z-index 以使元素落后。

演示

.up {
  background-color: red;
  opacity: .5; /* For DEMO Purpose */
  height: 100px;
  /* z-index: 100; /* Not required. Not work #1 */
}
.down {
  background-color: yellow;
  height: 100px;
  width: 50%;
  margin: 0 auto;
  z-index: -1; /* Update this */
  transform: translateY(-50%);
  position: relative; /* Add this */
}
<div class="up"></div>
<div class="down"></div>

关于html - 为什么 "z-index"不适用于具有转换 : translateY() 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32816750/

相关文章:

javascript - JS 函数的用户输入到输出

html - 背景图像问题 - 设置高度?

android - 设置LightTouchEnabled(假);已弃用 - 替代方案?

javascript - 3d过渡的jQuery动画

html - 将标题定位在中心

php - 使用 RegEx 提取表单字段

html - 涉及 ajax 时链接到样式表的正确程序是什么

html - CSS 过渡高度输入元素

javascript - CSS 旋转变换不停留在新位置

ios - 如何在 CALayer 上进行转换?