HTML中 !DOCTYPE 的解釋與作用

    最近在練習html和css練習題時,會發現有很多細節性的東西,以前都沒有注意到,雖然會敲代碼,但是理論性的知識掌握得不牢固,所以重新學習了一下以前因爲急於求成忽略的一些東西。


    <!DOCTYPE>標籤

    這個雖然每次都會寫到,寫在html文檔的第一行,但平時並沒有深究過。

    在w3school上是這麼解釋的:<!DOCTYPE>聲明不是HTML標籤,指示web瀏覽器關於頁面使用哪個HTML版本進行編寫的指令;在 HTML 4.01 中,<!DOCTYPE> 聲明引用 DTD,因爲 HTML 4.01 基於 SGML。DTD 規定了標記語言的規則,這樣瀏覽器才能正確地呈現內容。HTML5 不基於 SGML,所以不需要引用 DTD。

    簡而言之,<!DOCTYPE>規定了瀏覽器文檔使用哪種html或者xhtml規範

    平時我們常用的

<!DOCTYPE html>

這就是html5的聲明,在html4.01裏面有三種<!DOCTYPE>聲明方式

HTML 4.01 Strict

該 DTD 包含所有 HTML 元素和屬性,但不包括展示性的和棄用的元素(比如 font)。不允許框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

該 DTD 包含所有 HTML 元素和屬性,包括展示性的和棄用的元素(比如 font)。不允許框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

該 DTD 等同於 HTML 4.01 Transitional,但允許框架集內容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
"http://www.w3.org/TR/html4/frameset.dtd">

(以上來自w3school)

不同文檔模式主要影響CSS內容的呈現,尤其是瀏覽器對盒模型的解析

    說了這麼多,那DTD到底是個啥東西呢??

    DTD:Document Type Definition,中文翻譯爲:文檔類型定義。DTD可定義合法的XML文檔構建模塊。它使用一系列合法的元素來定義文檔的結構。因爲早期的版本基於SGML,所以需要套用SGML的解析規則。DTD的作用在於定義SGML文檔的文檔類型以便於瀏覽器解析。

    隨着技術的進步,現在HTML5 不基於 SGML,所以也就不需要引用 DTD了

    如果沒有<!DOCTYPE>聲明,那麼不同的瀏覽器將會以自己不同的怪異的模式去解析渲染頁面,這樣頁面在不同的瀏覽器上呈現出來的效果也就不一樣,人們把這稱之爲“怪異模式”。

    但是如果聲明瞭,將會開啓“嚴格模式”,又有人稱之爲“標準模式”,瀏覽器將已w3c標準來解析渲染頁面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章