识别匿名阻止框

时间:2018-10-25 03:56:40

标签: css specifications

我正在尝试了解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个是匿名屏蔽框):

  1. 一个匿名阻止框:some <em>text</em>
  2. 方块盒:<p>More text<p>
  3. 一个匿名阻止框:and more <em>text</em>

哪个看起来像这样: identifying anonymous block level boxes

最后,我可以这样直截了当地得出结论吗? 如果生成的是匿名阻止框,则如果其中的阻止容器 是一个阻止级框,则这种算法-Box Generation将处理 此块容器中的任何盒子作为块级盒子。这样一来,所有不是 block-level box 的盒子都会在内部/概念上被视为匿名blockbox ,这基本上是 block-级别框

我了解这些内容对吗?或者,在这一点上我完全错了吗?

1 个答案:

答案 0 :(得分:0)

  

盒子生成将处理 该块容器内的任何盒子作为块级盒子。这样一来,所有不是 block-level box 的盒子都会在内部/概念上被视为匿名blockbox ,这基本上是 block-级别框

否,它将创建带有内联格式设置上下文的匿名阻止框,该内嵌格式将内联符括起来。内联(或任何其他非块级框的框)不会更改。他们继续参与通常使用的相同格式设置环境;此算法可确保这些格式设置上下文由匿名块框建立,而匿名块框又可与父元素一起参与相同的块格式上下文。

该图大部分是正确的,除了主要的块级框并不总是建立块格式化上下文。您可能还会混淆术语“块格式设置上下文”,“块级别框”,“块容器框”和“块框”。请参阅我对这些问题的答案以进一步澄清: