当前位置: 首页 > news >正文

css_z-index属性

z-index 工作原理及层叠上下文(Stacking Context)

在 CSS 中,z-index 主要用于控制元素的堆叠顺序,决定哪些元素显示在上层,哪些元素在下层。它的工作原理涉及 层叠上下文(Stacking Context),理解这一概念对正确使用 z-index 至关重要。


  1. z-index 的基本规则

z-index 只能作用于 position 为 relative、absolute、fixed 或 sticky 的元素,static(默认值)无效。

z-index 数值越大,元素越靠上。

默认情况下,HTML 元素按照 DOM 顺序 依次渲染,后出现的元素会覆盖前面的元素。


  1. 层叠上下文(Stacking Context)

层叠上下文 是 CSS 视觉渲染中的一个独立层级概念,类似一个 “小世界”,里面的子元素只在该上下文内进行层叠,而不会影响外部的层级关系。

层叠上下文的创建方式:

一个元素会在以下情况下 自动创建 层叠上下文:

  1. 根元素():它是默认的最顶层层叠上下文。

  2. z-index 不是 auto 且 position 值为 relative、absolute、fixed。

  3. opacity < 1(即 opacity: 0.99 也会触发)。

  4. transform(如 transform: scale(1))。

  5. filter(如 filter: blur(5px))。

  6. perspective(如 perspective: 500px)。

  7. clip-path、mask、contain(layout 或 paint)。

  8. will-change: transform(触发 GPU 加速)。

注意:层叠上下文内的元素只能相互比较 z-index,不会受外部 z-index 影响。


  1. 层叠顺序(Stacking Order)

当多个元素处于同一层叠上下文时,它们的默认层叠顺序如下(从低到高):

  1. 根元素 (最低层)

  2. 正常流的块级元素(static 或 relative 且 z-index: auto)

  3. 负 z-index 的 position: absolute/fixed 元素

  4. 普通的 inline 或 inline-block 元素

  5. z-index: auto 的 position: relative/absolute/fixed 元素

  6. z-index >= 0 的 position: relative/absolute/fixed 元素

  7. 拥有 opacity < 1 的元素

  8. 拥有 z-index 的层叠上下文


  1. z-index 的常见问题

(1) z-index 失效?

原因:

没有 position:如果 position 为 static,z-index 不生效。

层叠上下文问题:子元素的 z-index 不能超越父级的层叠上下文。

被 opacity: <1 创建的新层叠上下文困住。

示例

.parent {
position: relative;
z-index: 10;
opacity: 0.9; /* 创建了新的层叠上下文 */
}

.child {
position: absolute;
z-index: 999; /* 仍然受 parent 约束,不会超出 */
}

(2) z-index 负值是否可用?

负 z-index 可以让元素 低于 常规文档流的内容,但不会低于 background(背景)。


  1. 例子

(1) 层叠上下文影响 z-index

.parent {
position: relative;
z-index: 2;
background: red;
width: 200px;
height: 200px;
}

.child {
position: absolute;
z-index: 999;
background: blue;
width: 100px;
height: 100px;
}

.sibling {
position: relative;
z-index: 1;
background: green;
width: 200px;
height: 200px;
margin-top: -100px;
}

结果

.child 的 z-index: 999 只影响 .parent 内部,不影响 .sibling。

.parent 的 z-index: 2 高于 .sibling 的 z-index: 1,所以 .parent 覆盖 .sibling。


  1. 总结

  2. z-index 只有在 position 为 relative/absolute/fixed/sticky 时生效。

  3. 层叠上下文会隔离 z-index,内部的 z-index 无法超出父级的层叠上下文。

  4. 某些 CSS 属性(opacity<1、transform、filter 等)会创建新的层叠上下文。

  5. 负 z-index 可能会让元素低于普通内容,但不会低于背景。

如果遇到 z-index 失效,首先检查是否 被层叠上下文限制 了!

相关文章:

  • C++STL---<functional>
  • 如何使用fiddler抓取手机APP的包,进行前后端bug定位
  • pyproj 库中Geod类—geod.npts()方法讲解
  • 智能制造:MES系统架构设计
  • github合并多个commit message以及rebase解决文件冲突
  • cisco简单DHCP配置
  • 第三章:ROS基础_《ROS机器人开发实践》_notes
  • 【全队项目】智能学术海报生成系统PosterGenius--风格个性化调整
  • vulnhub-serile靶机通关攻略
  • 在PyCharm 中免费集成Amazon CodeWhisperer
  • 【CSS3】04-标准流 + 浮动 + flex布局
  • 【大模型基础_毛玉仁】5.4 定位编辑法:ROME
  • 嵌入式图像采集与显示系统实战详解:基于V4L2与Framebuffer的实现
  • 单元测试中的测试替身(基于Java的示例)
  • 21 模板方法(Template Method)模式
  • Jmeter(性能指标、指标插件、测试问题、面试题、讲解稿)
  • Linux : System V 共享内存
  • 基于srpingboot智慧校园管理服务平台的设计与实现(源码+文档+部署讲解)
  • 基于SpringBoot的“小说阅读平台”的设计与实现(源码+数据库+文档+PPT)
  • 基于springboot+vue的校园数字化图书馆系统
  • 临沂做过网站的公司/手机百度账号登录个人中心
  • 做境外的赌博网站违法么/2022年热点营销案例
  • 广州美容网站建设/营销型网站的类型有哪些
  • 惠州营销网站建设公司/媒体发稿公司
  • 有关网站开发的国外书籍/百度识图搜索图片来源
  • 网站建设问卷调查/制作网页设计公司