2017年11月9日 星期四

HTML5 網頁宣告 DOCTYPE 的作用

資料來源

HTML5 網頁宣告 DOCTYPE 的作用


DOCTYPE 即是Document type(簡稱為DTDs),中文意思為「檔案類型」,在 Web 設計中用來說明目前所用的 XHTML 或者 HTML 是什麼版本。

要建立符合標準的XHTML網頁,DOCTYPE 宣告是必不可少的關鍵,因此你的XHTML必須設置一個正確的DOCTYPE,否則網頁中的標識和CSS都不會生效。

<!DOCTYPE>聲明位於位於 HTML 原始碼中的第一行,優先於 <html> 標籤。

在HTML中宣告 doctype 有兩個主要目的:
  1. 對檔案進行有效性驗證。它告訴用戶代理和校驗器這個檔案是按照什麼 DTDs 寫的。這個動作是被動的,每次頁面加載時,瀏覽器並不會下載 DTDs 並檢查合法性,只有當手動校驗頁面時才啟用。
  2. 決定瀏覽器的呈現模式。網頁通常有兩種版本:網景(Netscape)的 Navigator 以及微軟(Microsoft)的 Internet Explorer。在 W3C 創立網路標準後,為了不破壞當時既有的網站,瀏覽器不能直接起用這些標準。因此,瀏覽器導入了能分辨符合新規範、或屬於老舊網站的兩種模式。

對於實際操作,通知瀏覽器讀取檔案時用哪種解析算法。如果沒有寫,則瀏覽器則根據自身的規則對代碼進行解析,可能會嚴重影響html 排版佈局。瀏覽器的排版引擎有三種方式解析HTML檔案:

  1. 怪異模式(Quirks mode)
  2. 接近標準模式(Almost standards mode)
  3. 標準模式(Standards mode)

在怪異模式,排版會模擬 Navigator 4 與 Internet Explorer 5 的非標準行為。為了支持在網路標準被廣泛採用前,就已經建置好的網站,這麼做是必要的。在標準模式,行為(期待)由 HTML 與 CSS 的規範描述起來。在接近標準模式,有少數的怪異行為被實行。

DOCTYPE不存在或格式不正確會導致檔案以兼容模式呈現。標準模式的排版和JS運作模式都是以該瀏覽器支持的最高標準運行。在兼容模式中,頁面以寬鬆的向後兼容的方式顯示,模擬老式瀏覽器的行為以防止站點無法工作。

HTML DOCTYPE檔案類型舉例說明

HTML4.01檔案過渡定義類型,此類型定義的檔案可以使用HTML中的標籤與元素包括一些不被W3C推薦的標籤(例如:font、b等),不可以使用框架。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML4.01檔案嚴格定義類型,此類型定義的檔案可以使用HTML中的標籤與元素,不能包含不被W3C推薦的標籤(例如:font、b等),不可以使用框架

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

HTML4.01檔案框架定義類型,此類型等同於HTML4.01檔案過渡定義類型,但可以使用框架

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

XHTML1.0檔案過渡定義類型,此類型定義的檔案可以使用HTML中的標籤與元素包括一些不被W3C推薦的標籤(例如:font、b等),不可以使用框架(推薦使用)

<!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),不可以使用框架

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML1.0檔案框架定義類型,等同於XHTML1.0檔案過渡定義類型,但可以使用框架

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML1.1檔案嚴格定義類型,等同於XHTML1.0檔案過渡定義類型

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

HTML5檔案類型

<!DOCTYPE html>

<!DOCTYPE>的用法

<!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 的位置。

  • -:表示組織名稱未註冊。Internet 工程任務組(IETF)和萬維網協會(W3C)並非註冊的ISO 組織。+為默認,表示組織名稱已註冊。
  • DTD:指定公開文本類,即所引用的對像類型。默認為DTD。
  • HTML:指定公開文本描述,即對所引用的公開文本的唯一描述性名稱。後面可附帶版本號。默認為HTML。
  • URL:指定所引用對象的位置。
  • Strict:排除所有W3C 專家希望逐步淘汰的代表性屬性和元素。
HTML5 為什麼只需要寫<!DOCTYPE HTML>?

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

沒有留言: