在css2.1规范中,w3.org,有一个例子解释了包含块是如何形成的。
<P id="p2">This is text
<EM id="em1">
in the
<STRONG id="strong1">second</STRONG>
paragraph.
</EM>
</P>
当位置em
作为静态,strong
的包含块是通过以下方式建立的p
,但是当位置em
作为绝对的,strong
的包含块是通过以下方式建立的em
.
我浏览了有关包含块的章节,但找不到绝对位置是否会形成新的包含块。我有什么遗漏的吗?
我们确定#strong1
是一个非定位的内联框。因此,从规格来看,
[...]如果元素的位置是“相对”或“静态”,则包含块由最近的块容器祖先框的内容边缘形成。
When #em1
不是绝对定位的,它仍然是一个内联框。最近的块容器祖先框#strong1
is #p2
, 所以#p2
是它的包含块。
When #em1
是绝对定位的,它会变成一个块盒子,如图所示第9.7节。这使得它成为最接近的块容器祖先框#strong1
, 所以#em1
成为它的包含块。一个块盒是defined作为块级块容器盒。
那么绝对定位是否会导致元素为相对定位或非定位的框建立包含块?是的,但仅当绝对定位导致元素的框成为这些框的最近的块容器祖先时。
请注意,这是一个相当简化的情况,因为中的唯一框#em1
是内联框(包括周围的两个匿名内联#strong1
)。除此之外,并非所有块级框都是块容器(表是不是块容器框的块级框的常见示例),即使绝对定位does导致元素生成块框,因为我们在这里讨论的是内联框,所以内联框的块容器很可能是匿名块框within绝对定位的元素,如果该元素恰好包含块级框和内联级框的混合。这个复杂的案例详述于第 9.2.1.1 节.
但并发症还不止于此。我之所以说“很可能是”,是因为 CSS2.1 中没有定义匿名块盒是否能够建立包含块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)