美文网首页
堆叠上下文

堆叠上下文

作者: 好奇男孩 | 来源:发表于2018-09-20 20:46 被阅读11次

层叠上下文是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 的也是相同)。
  • 层叠上下文可以包含在其他层叠上下文中,并且一起创建一个有层级的层叠上下文。
  • 每个层叠上下文完全独立于它的兄弟元素:当处理层叠时只考虑子元素。
  • 每个层叠上下文是自包含的:当元素的内容发生层叠后,整个该元素将会 在父层叠上下文中 按顺序进行层叠。
    这里需要分两种情况讨论:
  1. 如果层叠上下文元素不依赖z-index数值,则其层叠顺序是z-index:auto可看成z:index:0级别;
  2. 如果层叠上下文元素依赖z-index数值,则其层叠顺序由z-index值决定。

于是乎,我们上面提供的层叠顺序表,实际上还是缺少其他重要信息。我又花功夫重新绘制了一个更完整的7阶层叠顺序图(同样的版权所有,商业请购买,可得无水印大图):

更完整的7阶层叠顺序图

大家知道为什么定位元素会层叠在普通元素的上面吗?

其根本原因就在于,元素一旦成为定位元素,其z-index就会自动生效,此时其z-index就是默认的auto,也就是0级别,根据上面的层叠顺序表,就会覆盖inlineblockfloat元素。

而不支持z-index的层叠上下文元素天然z-index:auto级别,也就意味着,层叠上下文元素和定位元素是一个层叠顺序的,于是当他们发生层叠的时候,遵循的是“后来居上”准则。

相关文章

  • 堆叠上下文

    堆叠顺序堆叠顺序 堆叠上下文 堆叠上下文 https://developer.mozilla.org/zh-CN/...

  • CSS深入浅出-堆叠上下文

    本博客主要讲CSS的堆叠顺序以及什么是堆叠上下文和堆叠上下文的作用。 堆叠上下文 导读 1.什么是堆叠顺序2.什么...

  • CCS深入2堆叠上下文

    堆叠顺序 堆叠上下文 堆叠上下文对z-index得影响 参考1 参考2

  • 堆叠上下文

    堆叠上下文可以理解为堆叠作用域,较为抽象 以下条件满足堆叠上下文 根元素 (HTML), z-index 值不为 ...

  • css深入浅出:03_堆叠上下文

    1 . 什么是堆叠顺序? 2 . 什么是堆叠上下文? 堆叠顺序: background border 块级 浮...

  • CSS 堆叠上下文

    一、什么是堆叠上下文 堆叠上下文(stacking context)是 HTML 中的一个三维的概念。这些 HTM...

  • stack content 堆叠上下文(CSS查漏补缺)

    文: jack同学 堆叠上下文:是一个区域,这个 哪些元素创建了堆叠上下文?html元素设置了z-index为非a...

  • 堆叠上下文

    1、堆(层)叠上下文是什么? 官方解释:层叠上下文是HTML元素的三维概念,这些HTML元素在一条假想的相对于面向...

  • 堆叠上下文

    层叠上下文是HTML元素的三维概念,这些HTML元素在一条假想的相对于面向(电脑屏幕的)视窗或者网页的用户的z轴上...

  • 堆叠上下文

    堆叠顺序 在这里,负的z-index在最下层(因为父元素没有定位)可是如果父元素定位呢?负的z-index就会出现...

网友评论

      本文标题:堆叠上下文

      本文链接:https://www.haomeiwen.com/subject/nyznnftx.html