我正在阅读 CSS Spec 2.1并发现难以区分的概念:
Except for table boxes, which are described in a later chapter, and replaced elements, a block-level box is also a block container box. A block container box either contains only block-level boxes or establishes an inline formatting context and thus contains only inline-level boxes. Not all block container boxes are block-level boxes: non-replaced inline blocks and non-replaced table cells are block containers but not block-level boxes. Block-level boxes that are also block containers are called block boxes.
我可以这样解释上面的描述吗?:
最佳答案
你的解释是正确的。
这里有一些额外的细节:
表格框不是 block 容器的原因是它建立的是表格布局,而不是 block 布局。内容进入单元格元素而不是表格元素,这就是为什么单元格框是 block 容器而不是表格框本身。
替换元素不包含任何其他内容,因此不能是 block 容器。
block 盒和行内 block 之间的唯一区别是前者是 block 级的,而后者是行内级的。因此显示值分别为
display: block
和display: inline-block
。由于两者都是 block 容器,因此它们的内容格式没有区别。
请注意,替换元素和表格框可以是行内级或 block 级。内联表和内联替换元素只是从您引用的部分中排除,因为该部分仅适用于 block 级框;您会在第 9 节的其他地方或 10 节中找到对它们的引用和 17分别。
此外,即使 block 容器盒只能包含 block 级盒或行内级盒,您仍然可以在同一个 block 容器盒中混合使用这两种盒;在内部,它只是通过 anonymous block boxes 将 block 级和行内级框分开。 .
关于CSS Spec : block-level box, block 容器盒和 block 盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883857/