美文网首页
什么是堆叠上下文?

什么是堆叠上下文?

作者: charllote8 | 来源:发表于2018-01-08 10:58 被阅读0次

首先我们需要了解css中堆叠顺序的概念
在没有触发堆叠上下文时,正常的堆叠顺序应该为:
负z-index<background<border<块级元素<浮动元素<文字/内联元素<定位元素<正z-index (如果是兄弟同级元素,后出现的属性会覆盖前一个属性)

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

根据字面定义我们很难理解堆叠上下文,所以我们先了解堆叠上下文的特性,知道什么样的特性会触发堆叠上下文
以下是MDN给出的触发堆叠上下文的元素特性:

  • 根元素 (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"的元素

那么,堆叠上下文到底有什么用呢?
在这里我们先思考一个问题,一个元素X设置了z-index:999;这个元素X一定是离用户最近的元素吗?

答案当然不是。从定义中我们可以看到堆叠上下文可以对元素的z-index产生影响。当某个元素触发了堆叠上下文,就相当于形成了一个小部门,假如这个堆叠上下文的z-index比元素X的堆叠上下文的z-index要高,这时候在小部门里的元素都要比元素X要高,因为这个部门本身就比X所处的部门高级。
由此可以看出堆叠上下文会影响元素的z-index。

以上是对堆叠上下文的一个简单理解,如有错误,欢迎指出。

相关文章

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

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

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

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

  • CSS 堆叠上下文

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

  • 堆叠上下文

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

  • CSS 堆叠上下文

    1:什么是堆叠顺序 1:什么是堆叠上下文 参考:张鑫旭博客 css-stacking-context-order-...

  • CCS深入2堆叠上下文

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

  • 什么是堆叠上下文?

    首先我们需要了解css中堆叠顺序的概念在没有触发堆叠上下文时,正常的堆叠顺序应该为:负z-index

  • 堆叠上下文

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

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

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

  • 堆叠上下文

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

网友评论

      本文标题:什么是堆叠上下文?

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