2013-05-29 70 views
5

我對這個內容sitepoint link內聯匿名框?

下面的標記被渲染成塊+在線+問題阻止

<p>In 1912, <em>Titanic</em> sank on her maiden voyage.</p> 

鉻:

In 1912, - display: block 
<em>Titanic</em> - display:inline 
sank on her maiden voyage. - display:block 

Sitepoint鏈接說2個匿名箱(第1和第3)應該內聯以保持p中的所有框相同。但是chrome會將p中的方框渲染爲塊和內聯的混合。

作爲每CSS3 box model

塊級盒可以含有任線箱或塊級框,但不能同時。如有必要,屬於這個盒子元素的任何線框被包裝在一個或多個(儘可能少的)匿名框中,並且'顯示''block'。

根據W3C的建議,sitepoint的內容似乎是正確的,但我在塊級框中使用了混合框(p)。

再次提出一點建議,匿名框應該是唯一的塊與站點資料相矛盾。

作爲每CSS3 box model

注意,此模塊中定義的匿名框是所有塊級別,但在其他的模塊中定義的匿名盒可以是不同的。

我的問題是:

1)如果所有3盒是內聯(瀏覽器呈現塊+在線+塊)

2)是內嵌在W3C標準中提到匿名框?

回答

4

Visual Formatting Model中的第9.2.2.1節實際上與您的例子幾乎完全相同,

任何直接包含在塊容器元素(不在內聯元素中)的文本都必須被視爲匿名內聯元素。

在具有HTML標記這樣一個文件:

<p>Some <em>emphasized</em> text</p> 

<p>生成塊框,具有在其內部幾個行內框。 「重點」框是由內聯元素(<em>)生成的內聯框,但其他框(「一些」和「文本」)是由塊級元素(<p>)生成的內聯框。後者被稱爲匿名行內框,因爲它們沒有關聯的行內元素。

您在Chrome的開發人員工具中看到的內容是匿名框所在元素的顯示值,而不是內聯框自身的顯示值。它們實際上都是內聯框,但"In 1912" & "sank on her maiden voyage"將是匿名的,而<em>元素將創建非匿名行內框,因爲它是內聯級元素。

+1

「將創建一個行框」應爲「將創建一個行內框」:

匿名行內框在規範略。 「線框」是別的。一個線框將由第一個匿名內聯框創建。根據容納塊盒的寬度,可能會創建更多的線盒。 – Alohci

2

em元素前後的文本被封裝在匿名內聯框中。

如果您在此fiddle中看到,所有文本都以行內嵌的方式顯示。 em是一個內聯元素,「在1912年」被包裝在一個內聯匿名框中,就像「在她的首航中沉沒一樣」。

調試器會說現在的p元素是display: block。但調試器不會顯示匿名框,因此您不會看到em前後的文本實際上是內聯的。你可以看到它,就好像它們是display: block它們將是元素的寬度,並將em推到一個新行上。 http://www.w3.org/TR/CSS2/visuren.html#anonymous