DOCTYPE 文件型別宣告
DOCTYPE宣告文件型別,以便驗證文件是否符合文件型別定義(DTD),同時指定了瀏覽器關於頁面使用哪個HTML版本進行編寫的指令。開發人員在編寫完html程式碼後,要進行有效性驗證。w3c提供了一個驗證文件有效性的線上服務:http://validator.w3.org/。
DOCTYPE宣告不是html標籤,必須放在html文件的第一行,而且絕不能在它之前新增xml宣告語句,否則在IE6會觸發怪異模式。在HTML 4.0中,DOCTYPE引用了DTD,因為HTML 4.0基於SGML。DTD規定了標記語言的規則,這樣瀏覽器才能正確的呈現內容。HTML5不是基於SGML,所以不需要引用DTD。
HTML4支援三種DOCTYPE宣告,而HTML5只支援一種,即:
<!DOCTYPE html>
HTML4支援的三種DOCTYPE宣告分別是嚴格型(strict)、過渡型(transitional)和框架型(Frameset)。
嚴格型的DTD宣告包含所有 HTML 元素和屬性,但不包括展示性的和棄用的元素(比如 font)。不允許框架集(Framesets)。宣告舉例如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
過渡型的DTD宣告包含所有HTML元素和屬性,包括展示性和棄用的元素。但不允許框架集。宣告舉例如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
框架型的DTD宣告等同於過渡型,但允許框架集內容。宣告舉例如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
對CSS而言,更重要的是DOCTYPE宣告決定了瀏覽器所使用文件渲染方法符合CSS標準的程度。瀏覽器使用兩種基本的模式,怪異模式和標準模式。二者的區別在於前者不遵循CSS規範,後者遵循CSS規範。DOCTYPE宣告會觸發瀏覽器的標準模式。
HTML5極大簡化了DOCTYPE宣告,即使對於未實現HTML5標準的主流瀏覽器,都會檢查文件型別宣告,並將內容切換到標準模式,因此我們現在就可以使用HTML5編寫網頁,而不必擔心將來出現相容性問題。