2014-07-02 13 views
0

這可能是一個愚蠢的問題。我定義的外部樣式表我所有的風格,我將它們鏈接到我的文件是這樣的:在顯示任何文本之前,字體大小屬性被破壞<!DOCTYPE…>

<link rel="stylesheet" type="text/css" href="tema.css" /> 

我的CSS是這樣的:

body { 
    background: #333; 
    font-size: 10pt; 
    color: white; 
    font-family: sans; 
} 
#Table { 
    /* font-size: inherit; */ 
} 

而且我<!DOCTYPE>是這樣的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

非常標準的方式。但是,爲什麼我的CSS樣式會中斷,如果我print什麼之前我的文檔<!DOCTYPE>聲明?

如果我這樣做:

foo 
<!DOCTYPE … > 
<html> 
    <table id="Table">…</table> 
</html> 

我的表的font-size屬性被破壞,其中的所有文字呈現與我的瀏覽器(12磅)的默認font-size,但只有裏面的文字表格(我還沒有找到其他問題,這是我迄今爲止唯一注意到的問題),並且只有當我沒有爲表格設置特定的font-size,或者直接使用10ptinherit

Table example 1

但是,如果我這樣做(把之前<!DOCTYPE>呼應):

<!DOCTYPE … > 
foo 
<html> 
    <table id="Table">…</table> 
</html> 

還是這個(設置一個特定font-size爲表,即使<!DOCTYPE>回顯文字):

body { 
    … 
} 
#Table { 
    font-size: inherit; 
} 

一切似乎都很好地工作:

Table example 2

的問題是:爲什麼?這發生在別人身上嗎?這是一個錯誤?我應該報告嗎?

這是pastebin,所以你可以玩它。

注意

這發生在谷歌Chrome,IE,Firefox,歌劇,綠,甚至我的Android手機的內置瀏覽器。

我只是爲了調試而回應該文本,所以沒有必要,我可以將<!DOCTYPE>置於頂端,但它只是感覺不對,只是我找不到任何信息這種行爲與<!DOCTYPE>聲明的位置有關。

+1

爲了記錄,這不是PHP。這種行爲發生在任何HTML文檔中。 – Undeterminant

+0

@Undeterminant沒錯,讓我更新信息。 – arielnmz

+1

避免在文檔類型上面輸出任何內容 - 就像那樣簡單。 –

回答

3

這不是一個錯誤。

DOCTYPE之前有什麼東西在瀏覽器中切換渲染引擎以使其偏離模式,並使它們的行爲與IE5類似(好,有點)。

因此,最好的解決方案總是在輸出之前輸出DOCTYPE

在你的情況下,問題是

不要inhertit字體屬性爲除了FONT-FAMILY表。

參見:

https://developer.mozilla.org/en-US/docs/Mozilla_Quirks_Mode_Behavior

https://developer.mozilla.org/en-US/docs/Quirks_Mode_and_Standards_Mode

+0

這樣做:*不要將字體屬性粘貼到除[font-family。*]之外的表格中,[Mozilla Quirks Mode Behavior](https://developer.mozilla.org/en-US/docs/Mozilla_Quirks_Mode_Behavior)正是我期待的對於。謝謝! – arielnmz

+0

已更新的答案。 –

1

你不應該有DOCTYPE聲明之前的任何用戶可讀或瀏覽器解釋的文本,因爲它指定你想要的內容類型在您的文檔中使用。解決辦法就是避免這樣做。 DOCTYPE聲明之前允許的唯一文本是僅由服務器端讀取的文本 - 例如PHP代碼,JSP snipplet等。

+1

謝謝,現在我知道了。這並不會造成我真正的麻煩,因爲它僅用於調試(確實是一種調試方法),但我會確保我不會這麼做。 – arielnmz

2

首先,在<!DOCTYPE>之前不輸出任何內容。 Doctype應該是瀏覽器在文檔中看到的絕對第一件事,因爲它使用doctype來確定如何呈現頁面。

網頁建立在標準之上,當HTML從根本上破壞時,瀏覽器切換到怪癖模式。

+0

正如我在問題中所說的那樣,它僅僅是爲了調試的目的,所以它不會引起任何問題,只是我發現這種行爲很奇怪。但是現在我知道這並不奇怪,只是*怪癖模式*。 – arielnmz