自己在做web開(kāi)發(fā)的時(shí)候,往往著重于界面設(shè)計(jì)及數(shù)據(jù)邏輯上的處理,而對(duì)一些細(xì)節(jié)不是特別注意。
doctype就是其中一個(gè):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1.doctype是什么
doctype標(biāo)簽 用來(lái)指定document的dtd(Document Type Definition)的,寫(xiě)在每個(gè)html的最前面,形如:
<!DOCTYPE RootElement Availability "URI" [declarations]>
如幾種常見(jiàn)的doctype:
HTML 4.01: Strict<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
XHTML 1.1 Strict DTD<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2.doctype能做什么
有沒(méi)有指定doctype, 以及指定不同的doctype都會(huì)激活不同的瀏覽器模式,從而產(chǎn)生對(duì)一些對(duì)html,css和js的影響,其中最著名的就是所謂的盒模型問(wèn)題。
2.1為什么會(huì)有多種模式
在很久很久以前還是netscape和ie爭(zhēng)霸天下的時(shí)代,由于太強(qiáng)大了,瀏覽器模式是由瀏覽器自己說(shuō)了算的。時(shí)光流逝,轉(zhuǎn)眼到了戰(zhàn)國(guó)群雄的時(shí)代,大家發(fā)現(xiàn)如果都自己說(shuō)了算的話天下就亂套了,就商量說(shuō)推舉個(gè)盟主吧,于是w3c就上臺(tái)了。但是問(wèn)題又來(lái)了,譬如IE,雖說(shuō)再不能一頭獨(dú)大,向標(biāo)準(zhǔn)看齊是大勢(shì)所趨,但是假如瀏覽器只支持標(biāo)準(zhǔn)的話,之前的許多頁(yè)面又會(huì)產(chǎn)生一些問(wèn)題。
于是doctype應(yīng)運(yùn)而生,假如沒(méi)有指定任何doctype,就采用原先的模式,被稱為怪癖模式(Quirks Mode),假如指定了doctype,就遵循標(biāo)準(zhǔn),被稱為標(biāo)準(zhǔn)模式或嚴(yán)格模式(Standards Mode)。期間,以Mozilla為代表的幾位,覺(jué)得標(biāo)準(zhǔn)模式里諸如img的解析不是很合適,就保留了一些個(gè)人意見(jiàn),在指定一些特定的doctype情況下,會(huì)采用一種準(zhǔn)標(biāo)準(zhǔn)模式(Almost Standards Mode),具體情況請(qǐng)參考Activating Browser Modes with Doctype,或是@隨網(wǎng)之舞的譯文用doctype激活瀏覽器模式。
2.2不同模式的具體影響
@ppk大牛已經(jīng)給我們做了很好的總結(jié),Quirks mode and strict mode。
3.建議采用的doctype
<!DOCTYPE HTML>
理由:支持html5,在不識(shí)別的情況下,會(huì)采用嚴(yán)格模式。
再加入一些reset css,如img { display: block }解決瀏覽器兼容問(wèn)題。
需要提醒注意的是,現(xiàn)在很多人使用的<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">以及<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">在幾個(gè)主要瀏覽器下都只相當(dāng)于怪癖模式,換句話說(shuō),可以不加。
2025國(guó)考·省考課程試聽(tīng)報(bào)名