DOCTYPE詳解

什麼是DTD?

SGML引入了文檔類型的概念,並由此引入了文檔類型定義(Document Type Definition: DTD)。文檔類型定義 (DTD) 實際上就是一套關於標記符的語法規則,它包含了對元素的定義,指出能夠在文檔中使用哪些標記符, 它們應該按什麼次序出現, 哪些標記符能夠出現於其它標記符中, 哪些標記符有屬性, 等等。屬於某種類型的文檔,能夠經過一個應用程序來解析,檢查是否全部的元素都被定義以及元素出現的次序是否正確。屬於同一種類別的文檔能夠按照一致的方式來處理。html

什麼是DOCTYPE?

document type文檔類型的縮寫,用來指定XHTML和HTML版本,告知瀏覽器用什麼標準解析這個文檔。
DOCTYPE不存在或格式不正確會致使文檔以兼容模式呈現html5

DOCTYPE語法?

語法格式

<!DOCTYPE 頂級元素 可用性 "註冊//組織//類型 標籤 版本 類型定義//語言" "url">

格式詳解

  • ! 表示這不是一個html元素
  • 頂級元素:指定 DTD 中聲明的頂級元素類型
  • 可用性:指定正式公開標識符(FPI)是可公開訪問的對象仍是系統資源。默認PUBLIC,可公開訪問的對象。SYSTEM系統資源,如本地文件或URL。
  • 註冊:指定組織是否由國際標準化組織(ISO)註冊。 + (默認),組織名稱已註冊。 - 未註冊。IETF和(W3C)是非註冊的ISO組織。
  • 組織:指定代表負責由 !DOCTYPE 聲明引用的DTD的建立和維護的團體或組織的名稱,如W3C。
  • 類型:指定公開文本類,即所引用的對象類型。默認DTD。
  • 標籤:指定公開文本描述,即對所引用的公開文本的惟一描述性名稱。後面可附帶版本號。默認HTML。
  • 定義:指定文檔類型定義
    • Frameset 一種專門針對框架頁面所使用的dtd,當頁面中含有框架元素時,就要採用這種dtd。
    • Strict 一種要求不很嚴格的,容許在html中使用html 4.01的標識,排除全部W3C專家但願逐步淘汰的表明性屬性和元素。
    • Transitional 包含除frameSet元素的所有內容。一種要求不很嚴格的,容許在html中使用html 4.01的標識。
  • 語言:指定公開文本語言,即用於建立所引用對象的天然語言編碼系統。該語言定義已編寫爲 ISO 639語言代碼(大寫兩個字母)。默認EN英語。
  • URL:指定所引用對象的位置

例子

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
//doctype首先根據-//W3C//DTD HTML 4.01 Transitional//EN查找相應引用對象,找不到則使用後面的url(這是永久存在的)

HTML5特殊性

HTML5 不基於 SGML,所以不須要對DTD進行引用,可是須要doctype來規範瀏覽器的行爲(讓瀏覽器按照它們應該的方式來運行);而HTML4.01基於SGML,因此須要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。瀏覽器

標準模式vs怪異模式?

模式能夠經過document.compatMode得到(CSS1Compat標準模式,BackCompat怪異、兼容模式)框架

怪異模式quirks mode

讓IE的行爲與(包含非標準特性的)IE5相同。這是一種比較寬鬆的向後兼容的模式。混雜模式一般模擬老式瀏覽器的行爲,以防止老站點沒法工做。PS:瀏覽器按照本身的方式解析代碼ui

標準模式standards mode

標準模式的排版和JS運做模式都是以該瀏覽器支持的最高標準運行 PS:瀏覽器按照 W3C 標準解析代碼編碼

準標準模式almost standards mode

這種模式下的瀏覽器特性有不少都是符合標準的,不標準的地方主要體如今處理圖片間隙的時候(在表格中使用圖片時問題最明顯)。url

超級標準模式

IE8引入的一種新的文檔模式,超級文檔模式可讓IE以其全部版本中最符合標準的方式來解釋網頁內容。
如何觸發以上模式詳見https://hsivonen.fi/doctype/#handlingcode

相關文章
相關標籤/搜索