z-index仅对position为relative、absolute、fixed或sticky的元素生效;若无效,先检查是否遗漏定位属性,并确认是否因父级创建了层叠上下文(如opacity
z-index 只对定位元素生效
设置 z-index 却没效果?大概率是因为目标元素没有定位属性。它只作用于 position 值为 relative、absolute、fixed 或 sticky 的元素,static(默认值)完全无视 z-index。
常见误操作:
- 给一个普通 直接写
z-index: 10;,毫无反应- 父容器是
static,子元素设了position: absolute和z-index,但被同级其他定位块遮挡——这时得看它们共同的**最近定位祖先**形成的层叠上下文层叠上下文(stacking context)是关键分水岭
z-index不是在全局比大小,而是在每个层叠上下文中独立排序。一旦某个元素创建了新的层叠上下文(比如设置了opacity: 0.99、transform: translateZ(0)、will-change: transform或filter: blur(1px)),它的所有子元素的z-index都只在这个小范围内生效,无法越过父级去和外部兄弟元素争高低。典型陷阱:
立即学习“前端免费学习笔记(深入)”;
- 父容器是