h5核心技術---<!DOCTYPE html>的作用(DOCTYPE)
阿新 • • 發佈:2021-09-27
DOCTYPE描述了html文件的型別,對不同的DOCTYPE型別,瀏覽器會使用不同的方法來解析。
沒有<!DOCTYPE html> 會以怪異模式來渲染頁面
在ie9往上的瀏覽器中,三種模式在渲染方面幾乎沒有區別 在ie789中,理論上存在怪異模式,實際只有標準模式 在ie6中,標準模式和怪異模式渲染的區別最大 在ie6以下的瀏覽器中,只有怪異模式 ###H5 1.DOCTYPE和瀏覽器渲染模式 DOCTYPE,或者稱為DocumentTypeDeclaration(文件型別宣告,縮寫DTD) 通常情況下,DOCTYPE位於一個HTML文件的最前面的位置,位於根元素HTML的起始標籤之前。 因為瀏覽器必須在解析HTML文件正文之前就確定當前文件的型別,以決定其需要採用的渲染模式, 不同的渲染模式會影響到瀏覽器對於CSS程式碼甚至JavaScript指令碼的解析 到目前為止,各瀏覽器主要包含了三種模式。在HTML5草案中,更加明確的規定了模式的定義: 傳統名稱HTML5草案名稱document.compatMode返回值 standardsmode(strictmode)no-quirksmodeCSS1Compat almoststandardsmodelimited-quirksmodeCSS1Compat quirksmodequirksmodeBackCompat document.compatMode document.compatMode屬性最初由微軟在IE中創造出來,這是一個只讀的屬性,返回一個字串, 只可能存在兩種返回值: BackCompat:標準相容模式未開啟(怪異模式) CSS1Compat:標準相容模式已開啟(標準模式) 在現代主流瀏覽器中,其實怪異模式的渲染和標準與幾乎標準間沒有太大的差別(ie9+谷歌火狐...) ie5.5之前都是ie自己的渲染模式,怪異模式 ie6才開始慢慢支援標準,標準模式,在ie6中怪異和標準模式的區別最大 ie789都是基於標準模式升級的,他們理論上存在怪異模式 HTML5提供的<DOCTYPEhtml>是標準模式,向後相容的,等同於開啟了標準模式, 那麼瀏覽器就得老老實實的按照W3C的標準解析渲染頁面 一個不含任何DOCTYPE的網頁將會以怪異(quirks)模式渲染。 2.DTD <!DOCTYPEhtml> 當doctype資訊如上時,表明該頁面是遵守了HTML5規範的,瀏覽器會選擇StandardsMode,這種doctype是最推薦的一種, 我們平時設計頁面都應該加上這一個doctype。 HTML5不基於SGML,所以不需要引用DTD,瀏覽器內部本身有對標籤進行解析渲染驗證的模組 <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> 當doctype如上時,瀏覽器同樣會選擇StandardsMode,雖然和第一種doctype有一些區別,但是幾乎可以認為是一樣的。<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 當doctype如上時,瀏覽器會選擇AlmostStandardsMode,渲染時和標準會有一些區別
當doctype缺失的時候,瀏覽器會選擇QuirksMode,這是非常不推薦的方式, 當doctype上面有註釋,標籤或者空行時,某些瀏覽器都會認為該頁面不具有doctype。 我們應該儘量避免QuirksMode,這對一個web應用是非常不利的地方。 4.每種doctype在瀏覽器中對應的渲染模式 https://en.wikipedia.org/wiki/Quirks_mode