z-index用于控制定位元素的堆叠顺序,值越大越靠前,但受堆叠上下文限制,需在正确上下文中设置层级以实现精准层叠效果。

在CSS中,z-index 用于控制元素的堆叠顺序(即谁在上、谁在下),尤其在元素发生重叠时起关键作用。它只对定位元素有效,也就是说,元素必须设置了 position 属性为 relative、absolute、fixed 或 sticky 才能使用 z-index。
1. z-index 的基本用法
z-index 接受整数值,包括负数、0 和正数。值越大,元素越“靠前”显示。
- 值为 auto:默认行为,元素按正常文档流堆叠
- 值为数字(如 1, 99, 999):数字越大,层级越高
- 值为负数:元素会显示在普通元素之下(常用于背景层)
示例:
div.front {position: relative;
z-index: 10;
}
div.back {
position: relative;
z-index: 1;
}
此时 .front 元素会覆盖 .back 元素(如果它们重叠)。
立即学习“前端免费学习笔记(深入)”;
2. 堆叠上下文(Stacking Context)的影响
z-index 并不是全局生效的。每个堆叠上下文是一个独立的层级环境。子元素的 z-index 只在自己的上下文中比较。
以下情况会创建新的堆叠上下文:
- 根元素(
) - position 不为 static 且 z-index 不为 auto 的元素
- flex 或 grid 容器的子项(若 z-index 不为 auto)
- opacity 小于 1 的元素
- transform、filter、will-change 等属性也会触发
这意味着:即使一个元素 z-index 设为 999,但如果它的父容器的堆叠层级很低,它也无法超过另一个高堆叠上下文中的低 z-index 元素。
3. 实际应用建议
使用 z-index 时要注意结构和层级设计,避免混乱。
- 常用层级划分(可参考):
背景层:-1 或 0
内容层:1
导航/弹窗:10+
模态框/提示:99 或 999 - 不要滥用大数值如 9999,保持可维护性
- 调试时可用浏览器开发者工具查看元素层级
- 注意父子元素间的堆叠限制
基本上就这些。掌握 z-index 的关键是理解“定位 + 堆叠上下文”。只要元素定位了,并在正确的上下文中设置数值,就能精准控制层叠效果。不复杂但容易忽略细节。










