【发布时间】:2020-06-20 17:16:53
【问题描述】:
作为背景,以下是 W3C 的 CSS2.1 规范 chapter 9 中的两个相关部分。
在每个堆叠上下文中,绘制以下图层 从后到前的顺序:
- 构成堆叠上下文的元素的背景和边框。
- 具有负堆栈级别(最负优先)的子堆栈上下文。
- 流入、非内联级别、非定位的后代。
- 未定位的浮动。
- 流入、内联级、非定位后代,包括内联表和内联块。
- 堆栈级别为 0 的子堆栈上下文和堆栈级别为 0 的定位后代。
- 具有正堆栈级别的子堆栈上下文(最不正的优先)。
...还有这个:
在每个堆栈上下文中,堆栈级别为 0 的定位元素 (在第 6 层),非定位浮动(第 4 层),内联块(第 5) 和内联表(第 5 层)被绘制为好像这些元素 他们自己生成了新的堆叠上下文,除了他们的 定位的后代和任何可能的子堆叠上下文 部分在当前的堆叠上下文中。
问题
- 当我们说“新的堆叠上下文”是由一个元素生成时,这是否意味着只有它自己及其后代(子/包含)元素根据新的堆叠上下文进行排序,并且整个新的堆叠上下文与根的堆叠上下文(假设没有其他上下文)一起(原子地)排序?
- 在下面的代码中,我有一个浮动、非内联/非定位根的后代,以及内联级/非定位后代。无论如何,浮动没有画在非内联级(块级)框的顶部,正如规范似乎所说的那样。只有背景被画在上面。这是为什么呢?
.float {
background-color: red;
margin-right: -25px;
border: 5px solid green;
float: left;
color: gray;
font-size: 5rem;
}
.old {
background: aqua;
font-size: 3rem;
}
.new {
background: yellow;
font-size: 3rem;
}
<span class="old">tesssss</span>
<div class="float">testTwo</div>
<div class="new">foo</div>
【问题讨论】:
-
您可能想阅读此内容:stackoverflow.com/questions/48731110/… ;) 您可能会在那里找到答案