CSS代码编写中视觉格式化模型的学习教程

2020-05-07 06:40:17易采站长站整理

同时是块容器盒的块级盒称为块盒(block boxes)。
201631103751472.png (384×234)

匿名块盒(Anonymous block boxes)

有时需要添加补充性盒,这些盒称为匿名盒(anonymous boxes),  它们没有名字,不能被 CSS 选择符选中。

不能被 CSS 选择符选中意味着不能用样式表添加样式。这意味着所有继承的 CSS 属性值为 inherit ,所有非继承的 CSS 属性值为 initial 。

块容器盒要么只包含行内级盒,要么只包含块级盒。但通常文档会同时包含两者。在这种情况下,将创建匿名块盒来包含毗邻的行内级盒。

拿下面的 HTML 代码来说 ( <div> 与 <p> 使用默认属性 display:block )

XML/HTML Code复制内容到剪贴板

<div>Some inline text <p>followed by a paragraph</p> followed by more inline text.</div>  

将创建两个匿名块盒,一个包含 <p> 前面的文本 (Some inline text), 一个包含 <p> 后面的文本(followed by more inline text),  结构如下:
201631103826074.png (597×137)

结果:

复制代码Some inline text
followed by a paragraph
followed by more inline text.
和 <p> 元素不同, 开发者不能控制这两个匿名盒。对于可继承属性, 它们将取 <div> 的属性值, 比如 color。对于非继承属性,值为初始值 ,比如没有指定 background-color, 值为初始值即 transparent,于是 <div> 背景可见。而 <p> 可以指定 background-color 。类似的,这两个匿名盒文本是一样的颜色。
另一种将创建匿名块盒的情况是,一个行内盒包含了一个或几个块盒。在这种情况下,包含块盒的盒将拆分为两个行内盒放置于块盒前后,然后分别由两个匿名块盒包含。这样块盒就与两个包含行内元素的匿名块盒形成了兄弟关系。

如果行内盒包含多个块盒,并且这些块盒之间没有夹杂内容,将在这些块盒前后创建匿名块盒。

行内级元素与行内盒(Inline-level elements and inline boxes)

当元素的 CSS 属性 display 的计算值为 inline, inline-block 或 inline-table 时,称它为行内级元素。视觉上它将内容与其它行内级元素排列为多行。典型的如段落内容,有文本(可以有多种格式譬如着重),或图片,都是行内级元素。
行内级元素生成行内级盒(inline-level boxes),参与行内格式化上下文(inline formatting context)。同时参与生成行内格式化上下文的行内级盒称为行内盒(Inline boxes)。所有display:inline 的非替换元素生成的盒是行内盒。而不参与生成行内格式化上下文的行内级盒称为原子行内级盒(atomic inline-level boxes)。这些盒由可替换行内元素,或 display 值为 inline-block 或 inline-table 的元素生成,不能拆分成多个盒。