最近在練習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標準來解析渲染頁面。