z-index用于控制定位元素在Z轴上的堆叠顺序,数值越大层级越高,但受堆叠上下文限制,需结合position使用,并注意层级分组以避免冲突。

在CSS中,z-index 用来控制元素的堆叠顺序,也就是元素在垂直于屏幕方向(Z轴)上的层级。数值越大,元素越靠前,越容易被看到。
z-index的基本规则
z-index只对定位元素生效,也就是说元素必须设置了 position 为 relative、absolute、fixed 或 sticky 才能使用 z-index。
- 默认情况下,所有元素的 z-index 为 auto,遵循 DOM 的自然堆叠顺序(后写的元素在上面)
- 设置一个具体数值(如 z-index: 1)后,元素会根据数值大小决定层级
- 正数 > 0 > 负数,数值越大层级越高
堆叠上下文的影响
z-index 并不是全局比较的,它受堆叠上下文(stacking context)限制。每个堆叠上下文内部独立计算层级。
- 当一个元素创建了新的堆叠上下文(比如设置了 z-index 为数值、opacity 小于 1、transform 等),它的子元素只能在这个上下文中进行层级比较
- 即使子元素的 z-index 是 999,它也无法超过另一个独立堆叠上下文中 z-index 为 1 但层级更高的父级
常见使用技巧
为了让 z-index 正常工作,注意以下几点:
立即学习“前端免费学习笔记(深入)”;
- 确保元素有定位属性,例如:position: relative;
- 避免随意使用极大数值(如 9999),建议按层级分组,比如:背景层用负数,UI层用 1-10,弹窗用 100 以上
- 模态框、下拉菜单、提示框等需要浮在其他内容之上时,单独设置较高的 z-index
简单示例
下面是一个常见场景:
.box1 {
position: absolute;
z-index: 1;
}
.box2 {
position: absolute;
z-index: 2;
}
此时 .box2 会显示在 .box1 上面,即使它在HTML中先出现。
基本上就这些。只要记住:定位 + z-index 数值 + 堆叠上下文范围,就能准确控制元素层级。不复杂但容易忽略细节。










