我正在尝试了解CSS概念Visual Formatting Model,特别是在这一部分Controlling box generation上。
根据Anonymous Block Boxes的规范,在他们的示例中具有这样的标记:
<DIV>
Some text
<P>More text
</DIV>
这是他们的解释:
(假设DIV和P都具有“ display:block”),则DIV似乎同时具有内联内容和块内容。为了使定义格式更容易,我们假定“某些文本”周围有一个匿名阻止框。
换句话说:如果一个块容器框(例如上面为DIV生成的容器)内部有一个块级框(例如上面的P),那么我们将其强制为内部只有块级框它。
起初,我从规范中暗示,我认为匿名阻止框将仅应用于文本。 但是,在一个更复杂的示例中,似乎是不正确,就像这样:
<div>
some <em>text</em>
<p>More text</p>
and more <em>text</em>
</div>
some
不能被视为匿名阻止框,而是整行some <em>text</em>
。因为,如果仅将some
视为匿名阻止框,则<em>text</em>
将是另一个;因此,这2个匿名阻止框将不在同一行中。
因此,在p
阻止框and more <em>text</em>
之后的另一个匿名阻止框也是如此。
因此,总共有3个屏蔽框(其中2个是匿名屏蔽框):
some <em>text</em>
。<p>More text<p>
。and more <em>text</em>
。哪个看起来像这样: identifying anonymous block level boxes
最后,我可以这样直截了当地得出结论吗? 如果生成的是匿名阻止框,则如果其中的阻止容器 是一个阻止级框,则这种算法-Box Generation将处理 此块容器中的任何盒子作为块级盒子。这样一来,所有不是 block-level box 的盒子都会在内部/概念上被视为匿名blockbox ,这基本上是 block-级别框。
我了解这些内容对吗?或者,在这一点上我完全错了吗?
答案 0 :(得分:0)
盒子生成将处理 该块容器内的任何盒子作为块级盒子。这样一来,所有不是 block-level box 的盒子都会在内部/概念上被视为匿名blockbox ,这基本上是 block-级别框。
否,它将创建带有内联格式设置上下文的匿名阻止框,该内嵌格式将内联符括起来。内联(或任何其他非块级框的框)不会更改。他们继续参与通常使用的相同格式设置环境;此算法可确保这些格式设置上下文由匿名块框建立,而匿名块框又可与父元素一起参与相同的块格式上下文。
该图大部分是正确的,除了主要的块级框并不总是建立块格式化上下文。您可能还会混淆术语“块格式设置上下文”,“块级别框”,“块容器框”和“块框”。请参阅我对这些问题的答案以进一步澄清: