CSS 中的堆叠

Stacking in CSS

提问人:Vaibhav 提问时间:9/30/2023 更新时间:9/30/2023 访问量:48

问:

我正在尝试理解 CSS 中的堆叠。从我在网上读到的内容来看,以下是堆叠顺序:

  1. 构成堆叠上下文的元素的背景和边框
  2. 具有负堆栈级别的定位子体
  3. 正常流中的块级后代
  4. 漂浮的后代
  5. 正常流中的内联级后代
  6. 堆栈级别设置为 auto 或 (zero) 的定位子体
  7. 具有正堆栈级别的定位子体

我尝试了几个实验,它们似乎都证实了这个顺序。但后来我开始在 https://github.com/home 上查看 Github 的主页,并遇到了一个似乎与此不符的案例。我正在寻求同样的解释。

在 Github 的主页上,有一个部分写着“加速高质量的软件开发。我们的人工智能平台通过提高开发人员速度的工具推动创新。此部分位于 with 类 中。有位置。其中的同级应用了类,并且定位设置为 。这有一个有位置的孩子的形象。此图像是主要背景图像,显示在着陆页顶部。divhome-campaign-productivity js-section overflow-hidden px-3 pb-8 pt-5divstaticdivcontainer-xl position-relativerelativez-indexautodivabsolute

令人惊讶的是,即使这张图片有位置,它也会出现在有位置的文本下方。absolutestatic

请一些人帮忙解释一下。

html css google-chrome dom 浏览器

评论

1赞 Temani Afif 9/30/2023
尝试用最小的代码重新创建这种情况,你会找到罪魁祸首。堆叠顺序比您描述的更复杂。

答:

0赞 Alohci 9/30/2023 #1

在带有 class 但包含文本的 div 中,是一个带有转换的 h3 元素。此转换home-campaign-productivity

...导致创建堆叠上下文。实现必须在其父堆叠上下文中绘制它创建的层,其堆叠顺序与该图层是具有 z-index 的定位元素时使用的堆叠顺序相同:0。如果定位了具有转换的元素,则 z-index 属性将按照 [CSS2] 中所述应用,但 auto 被视为 0,因为始终会创建新的堆叠上下文。

因此,它属于第 6 步,与 img 元素相同,并且由于它在树的顺序中较晚,因此它及其后代在图像上绘制。