您的位置:首页 > 其它

层叠上下文(The stacking context)

2016-07-28 21:34 302 查看
MDNThe stacking context

层叠上下文是HTML元素的三维概念,这些HTML元素在一条假想的相对于面向(电脑屏幕的)视窗或者网页的用户的z轴上延伸,HTML元素依据其自身属性按照优先级顺序占用层叠上下文的空间。

在之前的增加 z-index 的例子中, 某些 DIV 的渲染顺序是由 z-index 的值影响的。这是因为这些 DIV 具有 使他们形成一个层叠上下文 的特殊属性。

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

根元素 (HTML),

z-index 值不为 "auto"的 绝对/相对定位,

一个 z-index 值不为 "auto"的 flex 项目 (flex item),即:父元素 display: flex|inline-flex,

opacity
属性值小于 1 的元素(参考 the specification for opacity),

transform
属性值不为 "none"的元素,

mix-blend-mode
属性值不为 "normal"的元素,

filter
值不为“none”的元素,

perspective
值不为“none”的元素,

isolation
属性被设置为 "isolate"的元素,

position: fixed


will-change
中指定了任意 CSS 属性,即便你没有直接指定这些属性的值(参考 这篇文章

-webkit-overflow-scrolling
属性被设置 "touch"的元素

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

总结:

给一个 HTML 元素定位和 z-index 赋值创建一个层叠上下文,(opacity 值不为 1 的也是相同)。

层叠上下文可以包含在其他层叠上下文中,并且一起创建一个有层级的层叠上下文。

每个层叠上下文完全独立于它的兄弟元素:当处理层叠时只考虑子元素。

每个层叠上下文是自包含的:当元素的内容发生层叠后,整个该元素将会 在父层叠上下文中 按顺序进行层叠。

Note: 层叠上下文的层级是 HTML 元素层级的一个层级,因为只有某些元素才会创建层叠上下文。可以这样说,没有创建自己的层叠上下文的元素 将被父层叠上下文包含。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: