你知道如果沒有它,瀏覽器在渲染頁(yè)面的時(shí)候會(huì)使用怪異模式;你知道各個(gè)瀏覽器在怪異模式下對(duì)各個(gè)元素渲染是有差異的。所以你會(huì)寫像這樣的doctype:
代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
好在現(xiàn)在的各種web開發(fā)工具都足夠強(qiáng)大,支持插入模板代碼,因此你并不需要把這又長(zhǎng)又臭的doctype一個(gè)個(gè)字母的敲出來。但是如果你受夠了它,你也許可以嘗試下面這個(gè)寫法:
代碼如下:
<!DOCTYPE html>
哇哦,很簡(jiǎn)潔哦!好處顯而易見:一、你可以輕松的寫下這個(gè)doctype,而不用擔(dān)心會(huì)寫錯(cuò);二、你大概省下了105字節(jié)字符,對(duì)于一個(gè)每日PV達(dá)到千萬(wàn)級(jí)的站點(diǎn),它可以省下相當(dāng)客觀流量;三、它是向后兼容的,是的,html5的doctype就是這樣寫的,并且現(xiàn)代瀏覽器都認(rèn)識(shí)它。
如果你跟我一樣一直以為:沒有指定dtd將會(huì)開啟瀏覽器的怪異模式,這種說法是錯(cuò)的!正確的說法應(yīng)該是沒有定義doctype才會(huì)開啟怪異模式,也就是說你只需要定義<!doctype html>就可以讓瀏覽器在嚴(yán)格模式(標(biāo)準(zhǔn)模式)下渲染頁(yè)面,而不需要指定某個(gè)類型dtd。讓我們來回顧一下,所有的瀏覽器都需要兩種模式:怪異模式和嚴(yán)格模式(也有人叫標(biāo)準(zhǔn)模式)。IE 6 for Windows/mac, Mozilla, Safari和Opera 都實(shí)現(xiàn)了這兩種模式,但是IE 6以下版本永遠(yuǎn)定在了怪異模式。關(guān)于兩種模式,你需要知道以下幾點(diǎn):
1.在標(biāo)準(zhǔn)化之前寫的頁(yè)面是沒有doctype的,因此沒有doctype的頁(yè)面是在怪異模式下渲染的。
2.反過來說,如果web開發(fā)人員加入的doctype,說明他知道他所要做的事情,大部分的doctype會(huì)開啟嚴(yán)格模式(標(biāo)準(zhǔn)模式),頁(yè)面也會(huì)按照標(biāo)準(zhǔn)來渲染。
3.任何新的或者未知的doctype都會(huì)開啟嚴(yán)格模式(標(biāo)準(zhǔn)模式)。
4.每個(gè)瀏覽器都有自己的方式來激活怪異模式。你可以看看這個(gè)清單:http://hsivonen.iki.fi/doctype/
注意:你可以根本不需要根據(jù)你選擇的doctype來驗(yàn)證你的頁(yè)面,只要doctype標(biāo)簽存在就足以開啟嚴(yán)格模式(標(biāo)準(zhǔn)模式)了。如果你對(duì)我說的這些還是感到懷疑,那么請(qǐng)前往http://www.quirksmode.org/css/quirksmode.html#link2了解你想知道的內(nèi)容。我們只需要一小段JavaScript代碼就可以得到答案,它就是:
代碼如下:
mode=document.compatMode;
這個(gè)代碼可以用來判斷,當(dāng)前瀏覽器是處于怪異模式還是標(biāo)準(zhǔn)模式,該屬性的兼容性毋庸置疑.