z-index用于控制定位元素的堆叠顺序,数值越大越靠前,仅对position为relative、absolute、fixed或sticky的元素有效。通过设置正负值可调整元素层级,但需注意层叠上下文及父级限制,避免滥用高数值,推荐分段管理以提升维护性。

当多个定位元素(position 不为 static)在页面中发生重叠时,可以通过 z-index 属性来控制它们的堆叠顺序,从而解决显示层级混乱的问题。
什么是 z-index?
z-index 决定定位元素在 Z 轴(垂直于屏幕的方向)上的堆叠顺序。数值越大,元素越靠前;数值越小,越靠后。默认值为 auto,表示按默认文档流堆叠。
注意:z-index 只对定位元素(即 position 为 relative、absolute、fixed 或 sticky)有效。
如何用 z-index 控制层级
给需要调整前后顺序的元素设置不同的 z-index 值即可:
立即学习“前端免费学习笔记(深入)”;
- 正数:元素置于普通内容和其他默认层之上
- 负数:元素置于普通内容之下(需父容器不裁剪溢出)
- 数值比较决定层级:谁大谁在上面
示例:
红色块蓝色块
这里蓝色块会覆盖红色块,因为它的 z-index 更大。
常见问题与注意事项
使用 z-index 时容易遇到一些“看似无效”的情况,主要原因包括:
- 元素没有定位属性:必须设置 position 为 relative、absolute 等才能生效
- 形成新的层叠上下文:设置了 opacity、transform、filter 等属性的父元素可能限制子元素的 z-index 效果
- 父级堆叠上下文限制:即使子元素 z-index 很高,也会被限制在父元素的层级范围内
建议:调试时使用浏览器开发者工具查看层叠结构,确认是否意外创建了新的堆叠上下文。
实用建议
- 避免随意使用极大 z-index(如 9999),推荐分段管理:10、20、30… 便于维护
- 模态框、下拉菜单、提示浮层等常用 fixed 定位 + 较高 z-index
- 保持 HTML 结构清晰,减少不必要的嵌套,有助于层级控制
基本上就这些。只要理解 z-index 的作用机制和层叠上下文的影响,多层定位元素的重叠问题就能轻松应对。










