關於DOCTYPE

前言
今天被問道「有沒有仔細瞭解過<!DOCTYPE>標籤?」,愣了一下,由於一開始在W3cschool上看到過建議使用XHTML Transitional DTD,以後就很聽話地把Dreamweaver的HTML文檔類型默認設置爲XHTML 1.0 Transitional。以後就理所固然地一直用到如今了。人這東西還真是,越長大就越懶了,不少東西都被潛意識地當成了理所固然。既然已經被問及,就去找了找資料,總結了一下,權當作筆記吧~~

<!DOCTYPE>的定義
<!DOCTYPE>聲明位於文檔中的 最前面的位置,處於<html>標籤以前。此標籤可告知瀏覽器 文檔使用哪一種HTML或XHTML規範。
該標籤可聲明三種D TD類型,分別表示嚴格版本、過渡版本以及基於框架的HTML 版本。(假如文檔中的標記不遵循doctype聲明所指定的DTD,這個文檔除了不能經過代碼校驗 以外,還有可能沒法在瀏覽器中正確顯示。)

<!DOCTYPE>的用法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHT ML 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。
a ) 若是須要乾淨的標記,免於表現層的混亂,用HTML Strict DTD類型
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd">
b )Transitional DTD 可包含 W3C 所指望移入樣式表的呈現屬性和元素. 若是用戶使用了不支持層疊樣式表(CSS)的瀏覽器以致於你不得不使用 HTML 的呈現特性時,用 Transitional DTD 類型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
c ) 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。
a ) 若是須要乾淨的標記,免於表現層的混 亂,用XHTML Strict DTD類型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
b )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">
c ) 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">
可是發現百度跟谷歌用的是「<!doctype html>」,就再仔細查了一下資料,發現HTML5也是直接用的這個,不過是由於 HTML 5 不基於 SGML,所以不須要對 DTD 進行
引用,可是須要 doctype 來規範瀏覽器的行爲(讓瀏覽器按照它們應該的方式來運行)。

建議在之後都直接用「<!doctype html>」,用<!doctype html>的話就會開啓瀏覽器的標準兼容模式,在標準兼容模式下,不能保證與其它版本(IE6以前的,直接忽略吧),的 Internet Explorer 保持兼容,文檔的渲染行爲也許與未來的 Internet Explorer 不一樣,但也請你們放心地使用吧~~
相關文章
相關標籤/搜索