2012-02-24 59 views
1

我有一些HTML代碼。這裏是一個鏈接到小提琴與片段: http://jsfiddle.net/U32UU/2/HTML Doctype導致格式問題

該問題沒有出現在jsfiddle中,但你可以複製本地代碼片段,並在瀏覽器中看到它。隨着包含doctype規範,問題是所有的「錯誤」風格標籤格式不正確。在該行上方和下方添加了空間。如果我刪除了doctype指令,那麼問題就消失了,格式看起來不錯。

尋找這裏:http://www.w3schools.com/tags/ref_html_dtd.asp

我沒有做不是由DOCTYPE支持什麼。我也想知道我是否需要doctype規範。沒有它似乎工作得很好,但我想知道爲什麼格式問題在那裏。

回答

3

段落應該有邊距。在嚴格模式下(使用DOCTYPE),它們總是這樣做,但是在怪異模式下(沒有DOCTYPE),當段落放在表格中時,邊距消失。這是瀏覽器中的錯誤! (A蓄意一個,順便說一句。)

所以,如果你想不利潤率款,其利潤率屬性設置爲0

p {margin:0} 

,或者如果你希望出現這種情況只有在表格,

table p {margin:0} 

這將工作在嚴格和怪癖模式。

+0

感謝您的解釋 – 2012-02-24 18:20:37

+0

實際的建議是正確的,但原則上,它並不是錯誤(違反規範),因此瀏覽器傳統上會在表格單元格的開始處抑制「p」元素的邊距。這只是一個功能,可以用默認的瀏覽器樣式表來描述。 – 2012-02-24 18:27:51

+0

有趣。並非所有的怪癖都是古老的錯誤? – 2012-02-24 18:40:11

1

將以下內容添加到您的樣式中。您正在將<p>標籤嵌套到表格中,並且每個默認樣式表都有一個邊距。

p.error { 
    color: red; 
    margin: 0; 
} 

至於原因,你爲什麼會遇到(出)的doctype定義不同的行爲,我不知道,但它可能來自於不同的渲染模式使用的瀏覽器不同的默認樣式表。

+0

這是正確的,這是舊版Internet Explorer(或Netscape,我不記得是哪一個)的錯誤,現代瀏覽器在怪癖模式下模擬此行爲。 – 2012-02-24 18:06:43