讀到j(luò)s高程第十一章龙优,對(duì)文檔模式和文檔類(lèi)型的區(qū)別有點(diǎn)疑問(wèn),做了一番搜索和書(shū)的再閱讀怎顾,總結(jié)了一下。
頁(yè)面的文檔模式?jīng)Q定了可以使用什么功能漱贱,換句話(huà)就是說(shuō)槐雾,文檔模式?jīng)Q定了你可以使用哪個(gè)級(jí)別的CSS,可以在javascript中使用哪些API幅狮,以及如何對(duì)待文檔類(lèi)型(doctype)募强。
HTML的文檔模式可以通過(guò)使用文檔類(lèi)型DOCTYPE來(lái)指定的株灸。在所有 HTML 文檔中規(guī)定 DOCTYPE 是非常重要的,這樣瀏覽器就能了解預(yù)期的文檔類(lèi)型擎值, 告訴瀏覽器要通過(guò)哪一種規(guī)范解析文檔(比如HTML或XHTML規(guī)范)慌烧。
HTML 4.01 中的 doctype 需要對(duì) DTD 進(jìn)行引用,因?yàn)?HTML 4.01 基于 SGML鸠儿。而 HTML 5 不基于 SGML屹蚊,因此不需要對(duì) DTD 進(jìn)行引用,但是需要 doctype 來(lái)規(guī)范瀏覽器的行為进每。
目前文檔模式有三種:混雜模式(quirks mode)汹粤、標(biāo)準(zhǔn)模式(standards mode/ strict)和準(zhǔn)標(biāo)準(zhǔn)模式。對(duì)于準(zhǔn)標(biāo)準(zhǔn)模式田晚,一般又是通過(guò)過(guò)渡型(transitional)和框架集型(frameset)來(lái)觸發(fā)玄括。這些對(duì)于HTML 4.01 中的 doctype都會(huì)有不同的類(lèi)型和DTD,而HTML5都是統(tǒng)一的<!doctype html>
文檔模式也會(huì)被<meta http-equiv="X-UA-Compatible">影響肉瓦,這個(gè)標(biāo)簽的含義是強(qiáng)制瀏覽器以某種模式渲染頁(yè)面。
<meta http-equiv="X-UA-Compatible" content = "IE=IEVersion">
- IE=5:強(qiáng)制將文檔模式設(shè)置為IE5胃惜,忽略文檔類(lèi)型生命泞莉,采用quirks模式;
- IE=7/8/9:表示采用對(duì)應(yīng)IE版本的標(biāo)準(zhǔn)模式船殉,忽略文檔類(lèi)型聲明鲫趁,使用標(biāo)準(zhǔn)模式;
- IE=EmulateIE7/EmulateIE8/EmulateIE9利虫,采用模擬對(duì)應(yīng)IE版本的模式挨厚,如果是以<!DOCTYPE>作為文檔第一行則采用該版本的標(biāo)準(zhǔn)模式,否則將文檔模式設(shè)置為IE5
- IE=Edge:始終以最新的文檔模式來(lái)渲染頁(yè)面糠惫,忽略文檔類(lèi)型聲明疫剃。比如IE10就會(huì)用IE10標(biāo)準(zhǔn)模式,IE9就會(huì)用IE9標(biāo)準(zhǔn)模式硼讽。
而為什么會(huì)有這三種模式巢价,實(shí)際上是歷史遺留問(wèn)題。在很久以前的網(wǎng)絡(luò)上固阁,頁(yè)面通常有兩種版本:為網(wǎng)景(Netscape)的 Navigator準(zhǔn)備的版本以及為微軟(Microsoft)的 Internet Explorer準(zhǔn)備的版本壤躲。當(dāng) W3C 創(chuàng)立網(wǎng)絡(luò)標(biāo)準(zhǔn)后,為了不破壞當(dāng)時(shí)既有的網(wǎng)站备燃,瀏覽器不能直接起用這些標(biāo)準(zhǔn)碉克。因此,瀏覽器采用了兩種模式并齐,用以把能符合新規(guī)范的網(wǎng)站和老舊網(wǎng)站區(qū)分開(kāi)漏麦。
在怪異模式下客税,排版會(huì)模擬 Navigator 4 與 Internet Explorer 5 的非標(biāo)準(zhǔn)行為。為了支持在網(wǎng)絡(luò)標(biāo)準(zhǔn)被廣泛采用前唁奢,就已經(jīng)建好的網(wǎng)站霎挟,這么做是必要的。在標(biāo)準(zhǔn)模式下麻掸,行為即(但愿如此)由 HTML 與 CSS 的規(guī)范描述的行為酥夭。在接近標(biāo)準(zhǔn)模式下,只有少數(shù)的怪異行為被實(shí)現(xiàn)脊奋。
如果想查看具體有哪些區(qū)別 可以看
https://developer.mozilla.org/en-US/docs/Mozilla/Mozilla_quirks_mode_behavior
和
https://developer.mozilla.org/en-US/docs/Gecko's_Almost_Standards_Mode