標籤很簡單,你或許會不在乎。但你有沒有仔細了解標籤? W3cschool上建議使用XHTML Transitional DTD,很多人就很聽話地把Dreamweaver的HTML文檔類型預設為XHTML 1.0 Transitional。之後就理所當然地一直用到現在了。人這東西還真是,越長大就越懶了,很多東西都被潛意識地當成了理所當然。
的定義
聲明位於文件中的最前面的位置,在標籤之前。此標籤可告知瀏覽器文件使用哪一種HTML或XHTML規格。此標籤可宣告三種DTD類型,分別表示嚴格版本、過渡版本以及基於框架的HTML版本。 (假如文檔中的標記不遵循doctype聲明所指定的DTD,這個文檔除了不能通過代碼校驗之外,還有可能無法在瀏覽器中正確顯示。)
的用法
<!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 專家希望逐步淘汰的代表性屬性和元素。
三種HTML文件類型
HTML 4.01 規定了三種文件類型:Strict、Transitional 以及 Frameset。
如果需要乾淨的標記,免於表現層的混亂,用HTML Strict DTD類型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd">
Transitional DTD 可包含W3C 所期望移入樣式表的呈現屬性和元素. 如果用戶使用了不支援層疊樣式表( CSS)的瀏覽器以致於你必須使用HTML 的呈現特性時,用Transitional DTD 類型:
Frameset DTD 被用於帶有框架的文檔。除了 frameset 元素取代 body 元素之外,Frameset DTD 等同於 Transitional DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" " http://www.w3.org/TR/html4/frameset.dtd">
三種 XML 文件類型
XHTML 1.0 規定了三種 XML 文件類型:Strict、Transitional 以及 Frameset。
如果需要乾淨的標記,免於表現層的混亂,用XHTML Strict DTD類型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Transitional DTD 可包含W3C 所期望移入樣式表的呈現屬性和元素. 如果用戶使用了不支援層疊樣式表( CSS)的瀏覽器以至於你必須使用HTML 的呈現特性時,用Transitional DTD 類型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Frameset DTD 被用於帶有框架的文檔。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同於 Transitional DTD:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
選擇正確的doctype
為了獲得正確的doctype聲明,關鍵就是讓dtd與文檔所遵循的標準對應。例如,假定文檔遵循的是xhtml 1.0 strict標準,文檔的doctype聲明就應該引用對應的dtd。
另一方面,如果doctype聲明指定的是xhtml dtd,但文件包含的是舊式風格的html標記,就是不恰當的;類似地,如果doctype聲明指定的是html dtd,但文件包含的是xhtml 1.0 strict標記,同樣是不恰當的。
如果沒有指定有效的doctype聲明,大多數瀏覽器都會使用一個內建的預設dtd。在這種情況下, 瀏覽器會用內建的dtd來試著顯示你所指定的標記(不過這是頁面寫得太糟糕的時候的做法)。
看了一下京東、淘寶、還有博客園,用的都是這個(本人也一直都是用的這個):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
但是發現百度跟谷歌用的是“”,就再仔細查了一下資料,發現HTML5也是直接用的這個,不過是因為HTML 5 不基於SGML,因此不需要對DTD 進行引用,但是需要doctype 來規範瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行)。
建議在以後都直接用“”,用的話就會開啟瀏覽器的標準兼容模式,在標準兼容模式下,不能保證與其它版本(IE6之前的,直接忽略吧),的Internet Explorer 保持相容,文件的渲染行為也許與未來的Internet Explorer 不同,但也請大家放心地使用吧~~
PS:XHTML 1就是HTML 4.01的XML化,是一種不向前相容的格式。 HTML 4.01 中的 doctype 需要對 DTD 進行引用,因為 HTML 4.01 是基於 SGML。 SGML規定了在文件中嵌入描述標記的標準格式,指定了描述文件結構的標準方法,目前在WEB上使用的HTML格式便是使用固定標籤集的一種。