css 层叠上下文(stacking context),z-index

266 阅读2分钟

怎样判断元素的层叠顺序?

可以把z-index的值想象成版本号,根据层叠上下文的层级关系串联出每个元素的”版本号“,”版本号“的大小即表示元素的层叠关系,如下所示:

Root (0)

  • DIV #1 (0.5)
  • DIV #2 (0.2)
  • DIV #3 (0.4)
    • DIV #4  (0.4.6)
    • DIV #5  (0.4.1)
    • DIV #6  (0.4.3)


形成层叠上下文的条件?

文档中的层叠上下文由满足以下任意一个条件的元素形成:

在层叠上下文中,子元素同样也按照上面解释的规则进行层叠。 重要的是,其子级层叠上下文的 z-index 值只在父级中才有意义。子级层叠上下文被自动视为父级层叠上下文的一个独立单元。

总结:

  • 层叠上下文可以包含在其他层叠上下文中,并且一起创建一个层叠上下文的层级。
  • 每个层叠上下文都完全独立于它的兄弟元素:当处理层叠时只考虑子元素。
  • 每个层叠上下文都是自包含的:当一个元素的内容发生层叠后,该元素将被作为整体在父级层叠上下文中按顺序进行层叠。

层叠上下文的层级是 HTML 元素层级的一个子级,因为只有某些元素才会创建层叠上下文。可以这样说,没有创建自己的层叠上下文的元素会被父层叠上下文同化。