z-index用于控制定位元素的层叠顺序,值越大越靠前,需配合position使用,且受层叠上下文限制。

在css中,z-index 属性用于控制元素的层叠顺序,也就是哪个元素显示在前面,哪个显示在后面。它只对定位元素生效(即 position 值为 relative、absolute、fixed 或 sticky 的元素)。
理解 z-index 的基本规则
默认情况下,页面上的元素按照 html 文档流的顺序进行堆叠:后面的元素会覆盖前面的元素。使用 z-index 可以打破这种默认行为。
- z-index 接受整数值,包括负数、0 和正数
- 值越大,元素越靠前;值越小,越靠后
- 未设置 z-index 的定位元素,默认值为 auto,等效于 0
- 非定位元素(如 position: Static)即使设置了 z-index 也不会生效
如何正确使用 z-index
要让 z-index 起作用,必须先给元素设置定位属性。
.example {
position: relative;
z-index: 2;
}
上面的例子中,该元素会在同一层叠上下文内高于 z-index 为 1 或 0 的元素。
立即学习“前端免费学习笔记(深入)”;
注意层叠上下文的影响
z-index 并不是全局比较的。浏览器会创建层叠上下文,子元素的 z-index 只在自己的上下文中有效。
- 每个根元素(如 <html>)都有一个初始层叠上下文
- 设置了 opacity、transform、Filter、position 等属性的元素可能创建新的层叠上下文
- 在一个层叠上下文中,即使子元素 z-index 设为 999,也无法超过另一个更高层级上下文中的低 z-index 元素
常见使用场景
- 模态框(modal)或弹窗:设置高 z-index(如 1000)确保显示在最上层
- 导航栏固定在内容上方:使用 z-index: 10
- 轮播图中的前后箭头:通过 z-index 确保不被图片遮挡
基本上就这些。关键是记住:要使用 z-index,先加 position;同时留意层叠上下文的限制,避免出现“明明 z-index 很大却被盖住”的问题。


