建站必看!DOCTYPE 標(biāo)簽的深度剖析以及使用選擇

xzmyzy?:今天被問(wèn)道“有沒(méi)有仔細(xì)了解過(guò)<!DOCTYPE>標(biāo)簽?”,愣了一下,因?yàn)橐婚_(kāi)始在W3cschool上看到過(guò)建議使用XHTML Transitional DTD,之后就很聽(tīng)話地把Dreamweaver的HTML文檔類型默認(rèn)設(shè)置為XHTML 1.0 Transitional。之后就理所當(dāng)然地一直用到現(xiàn)在了。人這東西還真是,越長(zhǎng)大就越懶了,很多東西都被潛意識(shí)地當(dāng)成了理所當(dāng)然。既然已經(jīng)被問(wèn)及,就去找了找資料,總結(jié)了一下,權(quán)當(dāng)做筆記吧~~

好文推薦:
《網(wǎng)頁(yè)前端開(kāi)發(fā)工具推薦!超實(shí)用的CSS庫(kù)、框架大全》
《值得網(wǎng)頁(yè)開(kāi)發(fā)人員收藏的16款HTML5工具》
《網(wǎng)頁(yè)設(shè)計(jì)參考書(shū)!HTML5權(quán)威指南》

<!DOCTYPE>的定義:

<!DOCTYPE>聲明位于文檔中的最前面的位置,處于<html>標(biāo)簽之前。此標(biāo)簽可告知瀏覽器文檔使用哪種HTML或XHTML規(guī)范

該標(biāo)簽可聲明三種DTD類型,分別表示嚴(yán)格版本、過(guò)渡版本以及基于框架的HTML版本。假如文檔中的標(biāo)記不遵循doctype聲明所指定的DTD,這個(gè)文檔除了不能通過(guò)代碼校驗(yàn)之外,還有可能無(wú)法在瀏覽器中正確顯示。)

<!DOCTYPE>的用法:

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

解析:在上面的聲明中,聲明了文檔的根元素是 html,它在公共標(biāo)識(shí)符被定義為 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中進(jìn)行了定義。瀏覽器將明白如何尋找匹配此公共標(biāo)識(shí)符的 DTD。如果找不到,瀏覽器將使用公共標(biāo)識(shí)符后面的 URL 作為尋找 DTD 的位置。

-:?? 表示組織名稱未注冊(cè)。Internet 工程任務(wù)組(IETF)和萬(wàn)維網(wǎng)協(xié)會(huì)(W3C)并非注冊(cè)的 ISO 組織。

+為默認(rèn),表示組織名稱已注冊(cè)。

DTD:???指定公開(kāi)文本類,即所引用的對(duì)象類型。 默認(rèn)為DTD。

HTML?:???指定公開(kāi)文本描述,即對(duì)所引用的公開(kāi)文本的唯一描述性名稱。后面可附帶版本號(hào)。默認(rèn)為HTML。

URL:? 指定所引用對(duì)象的位置。

Strict:排除所有 W3C 專家希望逐步淘汰的代表性屬性和元素。

 

三種HTML文檔類型:

HTML 4.01 規(guī)定了三種文檔類型:Strict、Transitional 以及 Frameset。

a)如果需要干凈的標(biāo)記,免于表現(xiàn)層的混亂,用HTML Strict DTD類型:

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

b)Transitional DTD 可包含 W3C 所期望移入樣式表的呈現(xiàn)屬性和元素. 如果用戶使用了不支持層疊樣式表(CSS)的瀏覽器以至于你不得不使用 HTML 的呈現(xiàn)特性時(shí),用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 元素之外,F(xiàn)rameset 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 規(guī)定了三種 XML 文檔類型:Strict、Transitional 以及 Frameset。

a?) 如果需要干凈的標(biāo)記,免于表現(xiàn)層的混亂,用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 所期望移入樣式表的呈現(xiàn)屬性和元素. 如果用戶使用了不支持層疊樣式表(CSS)的瀏覽器以至于你不得不使用 HTML 的呈現(xiàn)特性時(shí),用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 元素之外,F(xiàn)rameset 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聲明,關(guān)鍵就是讓dtd與文檔所遵循的標(biāo)準(zhǔn)對(duì)應(yīng)。

例如,假定文檔遵循的是xhtml 1.0 strict標(biāo)準(zhǔn),文檔的doctype聲明就應(yīng)該引用相應(yīng)的dtd。

另一方面,如果doctype聲明指定的是xhtml dtd,但文檔包含的是舊式風(fēng)格的html標(biāo)記,就是不恰當(dāng)?shù)模活愃频兀绻鹍octype聲明指定的是html dtd,但文檔包含的是

xhtml 1.0 strict標(biāo)記,同樣是不恰當(dāng)?shù)摹?/p>

如果沒(méi)有指定有效的doctype聲明,大多數(shù)瀏覽器都會(huì)使用一個(gè)內(nèi)建的默認(rèn)dtd。在這種情況下, 瀏覽器會(huì)用內(nèi)建的dtd來(lái)試著顯示你所指定的標(biāo)記(不過(guò)這是頁(yè)面寫(xiě)得太糟糕的時(shí)候的做法)。

看了一下京東、淘寶、還有博客園,用的都是這個(gè)(本人也一直都是用的這個(gè)):

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

但是發(fā)現(xiàn)百度跟谷歌用的是“<!doctype html>”,就再仔細(xì)查了一下資料,發(fā)現(xiàn)HTML5也是直接用的這個(gè),不過(guò)是因?yàn)?HTML 5 不基于 SGML,因此不需要對(duì) DTD 進(jìn)行

引用,但是需要 doctype 來(lái)規(guī)范瀏覽器的行為(讓瀏覽器按照它們應(yīng)該的方式來(lái)運(yùn)行)。

建議在以后都直接用“<!doctype html>”,用<!doctype html>的話就會(huì)開(kāi)啟瀏覽器的標(biāo)準(zhǔn)兼容模式,在標(biāo)準(zhǔn)兼容模式下,不能保證與其它版本(IE6之前的,直接忽略吧),的 Internet Explorer 保持兼容,文檔的渲染行為也許與將來(lái)的?Internet Explorer 不同,但也請(qǐng)大家放心地使用吧~~

 

小貼士:

XHTML 1就是HTML 4.01的XML化,是一種不向前兼容的格式。

HTML 4.01 中的 doctype 需要對(duì) DTD 進(jìn)行引用,因?yàn)?HTML 4.01 基于 SGML。

SGML規(guī)定了在文檔中嵌入描述標(biāo)記的標(biāo)準(zhǔn)格式,指定了描述文檔結(jié)構(gòu)的標(biāo)準(zhǔn)方法,目前在WEB上使用的HTML格式便是使用固定標(biāo)簽集的一種 SGML文檔。

 

原文地址:cnblogs
作者:xzmyzy

【優(yōu)設(shè)網(wǎng) 原創(chuàng)文章 投稿郵箱:2650232288@qq.com】
 
================關(guān)于優(yōu)設(shè)網(wǎng)================
"優(yōu)設(shè)網(wǎng)uisdc.com"是一個(gè)分享網(wǎng)頁(yè)設(shè)計(jì)、無(wú)線端設(shè)計(jì)以及PS教程的干貨網(wǎng)站。
【特色推薦】
設(shè)計(jì)師需要讀的100本書(shū):史上最全的設(shè)計(jì)師圖書(shū)導(dǎo)航:http://hao.uisdc.com/book/
設(shè)計(jì)微博:擁有粉絲量65萬(wàn)的人氣微博@優(yōu)秀網(wǎng)頁(yè)設(shè)計(jì) ,歡迎關(guān)注獲取網(wǎng)頁(yè)設(shè)計(jì)資源、下載頂尖設(shè)計(jì)素材。
設(shè)計(jì)導(dǎo)航:全球頂尖設(shè)計(jì)網(wǎng)站推薦,設(shè)計(jì)師必備導(dǎo)航:http://hao.uisdc.com
———————————————————–
想在手機(jī)上、被窩里獲取設(shè)計(jì)教程、經(jīng)驗(yàn)分享和各種意想不到的"福利"嗎?
添加 優(yōu)秀網(wǎng)頁(yè)設(shè)計(jì) 微信號(hào):【youshege】?jī)?yōu)設(shè)哥的全拼
您也可以通過(guò)掃描下方二維碼快速添加:

建站必看!DOCTYPE 標(biāo)簽的深度剖析以及使用選擇
 

收藏
點(diǎn)贊

復(fù)制本文鏈接 文章為作者獨(dú)立觀點(diǎn)不代表優(yōu)設(shè)網(wǎng)立場(chǎng),未經(jīng)允許不得轉(zhuǎn)載。