DOCTYPE 是 document type (文檔的類型)的縮寫,在web中你要告訴瀏覽器你的XHTML或者HTML是用的什麼版本,可以讓瀏覽器根據你聲明的版原本解析html文檔,不寫《!doctype》,你的標識和css都不會生效。css
<!DOCTYPE>位於html第一行,他在HTML中的doctype有兩個主要目的。html
(1)對文檔進行有效性驗證。git
他告訴用戶代理和校驗器這個文檔是按照什麼DTD寫的。這個動做是被動的,每次頁面加載時,瀏覽器並不會下載DTD並檢查合法性,只有當手動校驗頁面時才啓用。github
(2)決定瀏覽器的呈現模式web
對於實際操做,通知瀏覽器讀取文檔時用哪一種算法。若是沒有寫,則瀏覽器則根據自身的的規則對代碼進行解析,可能嚴重影響html排版佈局。瀏覽器有三種方式解析HTML文檔。算法
非怪異(標準)模式瀏覽器
怪異模式框架
部分怪異(近乎標準)模式佈局
HTML DOCTYPE文檔類型舉例說明spa
HTML4.01文檔過渡定義類型,此類型定義的文檔可使用HTML中的標籤與元素包括一些不被W3C推薦的標籤(例如:font、b等),不可使用框架
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
HTML4.01文檔嚴格定義類型,此類型定義的文檔可使用HTML中的標籤與元素,不能包含不被W3C推薦的標籤(例如:font、b等),不可使用框架
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
HTML4.01文檔框架定義類型,此類型等同於HTML4.01文檔過渡定義類型,但可使用框架
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
XHTML1.0文檔過渡定義類型,此類型定義的文檔可使用HTML中的標籤與元素包括一些不被W3C推薦的標籤(例如:font、b等),不可使用框架(推薦使用)
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
XHTML1.0文檔嚴格定義類型,此類型定義的文檔只可使用HTML中定義的標籤與元素,不能包含不被W3C推薦的標籤(例如:font、b),不可使用框架
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
XHTML1.0文檔框架定義類型,等同於XHTML1.0文檔過渡定義類型,但可使用框架
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
XHTML1.1文檔嚴格定義類型,等同於XHTML1.0文檔過渡定義類型
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
HTML5文檔類型
1
|
<!DOCTYPE html>
|
<!DOCTYPE>的用法
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
解析:在上面的聲明中,聲明瞭文檔的根元素是 html,它在公共標識符被定義爲 「-//W3C//DTD XHTML 1.0 Strict//EN」 的 DTD 中進行了定義。瀏覽器將明白如何尋找匹配此公共標識符的 DTD。若是找不到,瀏覽器將使用公共標識符後面的 URL 做爲尋找 DTD 的位置。
HTML5 爲何只須要寫 <!DOCTYPE HTML>?
HTML5 不基於 SGML,所以不須要對DTD進行引用,可是須要doctype來規範瀏覽器的行爲(讓瀏覽器按照它們應該的方式來運行);而HTML4.01基於SGML,因此須要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。
參考連接:https://zh.wikipedia.org/wiki/SGML