<!DOCTYPE> 聲明必須是 HTML 文檔的第一行,位於 <html> 標籤以前。html
<!DOCTYPE> 聲明不是 HTML 標籤;它是指示 web 瀏覽器關於頁面使用哪一個 HTML 版本進行編寫的指令。web
在 HTML 4.01 中,<!DOCTYPE> 聲明引用 DTD,由於 HTML 4.01 基於 SGML。DTD 規定了標記語言的規則,這樣瀏覽器才能正確地呈現內容。瀏覽器
HTML5 不基於 SGML,因此不須要引用 DTD。ruby
提示:請始終向 HTML 文檔添加 <!DOCTYPE> 聲明,這樣瀏覽器才能獲知文檔類型。框架
經常使用的 DOCTYPE 聲明佈局
HTML 5ui
<!DOCTYPE html>
HTML 4.01 Strictspa
該 DTD 包含全部 HTML 元素和屬性,但不包括展現性的和棄用的元素(好比 font)。不容許框架集(Framesets)。code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitionalhtm
該 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">
XHTML 1.0 Strict
該 DTD 包含全部 HTML 元素和屬性,但不包括展現性的和棄用的元素(好比 font)。不容許框架集(Framesets)。必須以格式正確的 XML 來編寫標記。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
該 DTD 包含全部 HTML 元素和屬性,包括展現性的和棄用的元素(好比 font)。不容許框架集(Framesets)。必須以格式正確的 XML 來編寫標記。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset
該 DTD 等同於 XHTML 1.0 Transitional,但容許框架集內容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
該 DTD 等同於 XHTML 1.0 Strict,但容許添加模型(例如提供對東亞語系的 ruby 支持)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
怪異模式:僅在沒有在文檔首行添加!DOCTYPE聲明的狀況下會出現
腳本檢測
能夠經過document對象有個屬性compatMode ,它有兩個值:
「BackCompat」 對應怪異模式
「CSS1Compat」 對應標準模式
近似標準模式
近似標準模式(Almost Standards Mode)從字面意思上看與標準模式很是相似,但確實有小的差異。主要體如今對於表格單元格內垂直方向佈局渲染差別。IE8 開始、Firefox、Chrome、Safari、Opera 7.5 開始,這些瀏覽器的標準模式更加嚴格的遵循了 CSS2.1 規範,故對於在目前看來不太「標準」的之前的標準模式,被賦予了「近似標準模式」的名字。可是在較早的 IE6 IE7 以及 Opera 7.5 以前版本中,瀏覽器沒法嚴格遵循 CSS2.1 規範,故對於它們來講沒有這個近似標準模式,也能夠理解爲它們的近似標準模式就是標準模式。
到目前爲止,能夠看到各瀏覽器主要包含了三種模式。在 HTML5 草案中,更加明確的規定了模式的定義:
傳統名稱 |
HTML5 草案名稱 |
document.compatMode 返回值 |
standards mode 或者 strict mode |
no-quirks mode |
CSS1Compat |
almost standards mode |
limited-quirks mode |
CSS1Compat |
quirks mode |
quirks mode |
BackCompat |