DOCTYPE與瀏覽器模式詳解(標(biāo)準(zhǔn)模式&混雜模式)筆記

參考

關(guān)于渲染模式:

在多年以前(IE6誕生以前)戒突,各瀏覽器都處于各自比較封閉的發(fā)展中(基本沒(méi)有兼容性可談)幕随。

隨著WEB的發(fā)展竟趾,兼容性問(wèn)題的解決越來(lái)越顯得迫切顾瞻,隨即泼疑,各瀏覽器廠商發(fā)布了按照標(biāo)準(zhǔn)模式(遵循各廠商制定的統(tǒng)一標(biāo)準(zhǔn))工作的瀏覽器,比如IE6就是其中之一朋其。
存在問(wèn)題:以前建設(shè)的網(wǎng)站并不支持標(biāo)準(zhǔn)模式
解決:各瀏覽器在加入標(biāo)準(zhǔn)模式的同時(shí)也保留了混雜模式

混雜模式:即以前那種未按照統(tǒng)一標(biāo)準(zhǔn)工作的模式王浴,也叫怪異模式
近似標(biāo)準(zhǔn)模式:在一種模式中同時(shí)融入標(biāo)準(zhǔn)模式和部分混雜模式的特性,也稱為接近標(biāo)準(zhǔn)模式梅猿、準(zhǔn)標(biāo)準(zhǔn)模式氓辣、最有限混雜模式
標(biāo)準(zhǔn)模式:近似標(biāo)準(zhǔn)模式、標(biāo)準(zhǔn)模式袱蚓、超級(jí)標(biāo)準(zhǔn)模式三者也共同被稱作標(biāo)準(zhǔn)模式

因此钞啸,瀏覽器的模式可以分為兩類:標(biāo)準(zhǔn)模式和混雜模式,其中喇潘,標(biāo)準(zhǔn)模式又可更嚴(yán)格的分為近似標(biāo)準(zhǔn)模式体斩、標(biāo)準(zhǔn)模式、超級(jí)標(biāo)準(zhǔn)模式颖低。

image.png

需要注意的是絮吵,不同廠商瀏覽器的標(biāo)準(zhǔn)模式也是有細(xì)微差別的(這是標(biāo)準(zhǔn)實(shí)現(xiàn)程度的問(wèn)題)。此外忱屑,同品牌不同版本瀏覽器的標(biāo)準(zhǔn)模式也是有差別的蹬敲,比如IE6&IE7時(shí)代的標(biāo)準(zhǔn)模式在現(xiàn)在看來(lái)或許已經(jīng)不那么標(biāo)準(zhǔn)了(IE8和IE9都在不斷的提高標(biāo)準(zhǔn)的實(shí)現(xiàn)程度,因此差距越來(lái)越大是必然的)莺戒,但盡管如此它們依然叫做標(biāo)準(zhǔn)模式伴嗡,畢竟它們?cè)谀莻€(gè)特定時(shí)代那個(gè)特定版本中確實(shí)是按照盡可能遵循標(biāo)準(zhǔn)的方式工作的。

什么是DOCTYPE:

DOCTYPE从铲,或者稱為 Document Type Declaration(文檔類型聲明瘪校,縮寫(xiě) DTD)。通常情況下名段,DOCTYPE 位于一個(gè) HTML 文檔的最前面的位置阱扬,位于根元素 HTML 的起始標(biāo)簽之前。這樣一來(lái)伸辟,在瀏覽器解析 HTML 文檔正文之前就可以確定當(dāng)前文檔的類型价认,以決定其需要采用的渲染模式(不同的渲染模式會(huì)影響到瀏覽器對(duì)于 CSS 代碼甚至 JavaScript 腳本的解析)

DOCTYPE與各種模式的關(guān)系:

混雜模式:不寫(xiě)DOCTYPE

近似標(biāo)準(zhǔn)模式:HTML 4.01 XHTML 1.0 loose frameset transitional

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

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

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

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

標(biāo)準(zhǔn)模式:HTML 4.01 XHTML 1.0 Strict

<!DOCTYPE html>

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

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

我們可以看到自娩,過(guò)渡型或框架型HTML聲明與過(guò)渡型或框架型XHTML聲明均可使瀏覽器進(jìn)入近似標(biāo)準(zhǔn)模式用踩,同時(shí),html5的DOCTYPE聲明和嚴(yán)格型HTML聲明以及嚴(yán)格型XHTML聲明則會(huì)使瀏覽器進(jìn)入標(biāo)準(zhǔn)模式忙迁。
更詳細(xì)說(shuō)明

三種模式下的表現(xiàn)差異:

混雜模式是不可取的脐彩,因?yàn)槠錄](méi)有兼容性可言。在IE(IE6~IE9)中姊扔,混雜模式即使用IE5.5內(nèi)核來(lái)解析并渲染頁(yè)面惠奸。
近似標(biāo)準(zhǔn)模式是在盡可能遵循標(biāo)準(zhǔn)的基礎(chǔ)上兼容部分非標(biāo)準(zhǔn)代碼,比如一些已經(jīng)棄用的標(biāo)簽等恰梢。
標(biāo)準(zhǔn)模式則是對(duì)統(tǒng)一標(biāo)準(zhǔn)實(shí)現(xiàn)最好的模式佛南,它要求標(biāo)簽必須閉合(唯一不需要閉合的就是DOCTYPE標(biāo)簽)梗掰,不能使用已經(jīng)廢棄的標(biāo)簽等等。目前嗅回,使用最多的DOCTYPE聲明為過(guò)渡型HTML或XHTML及穗,因?yàn)樗茏畲笤挼募嫒菀恍├洗a。不過(guò)绵载,技術(shù)領(lǐng)先的公司(比如google埂陆、facebook、twitter等都如此)都已經(jīng)使用了html5的DOCTYPE聲明娃豹,即<!DOCTYPE html>焚虱,它所觸發(fā)的模式與嚴(yán)格型HTML或嚴(yán)格型XHTML所觸發(fā)的模式完全相同,但好處是節(jié)省代碼且向前兼容(HTML5時(shí)代)懂版。

其它激活混雜模式的情況:

當(dāng)我們不寫(xiě)DOCTYPE聲明時(shí)鹃栽,所有瀏覽器都會(huì)進(jìn)入混雜模式
也存在因其他情況而進(jìn)入混雜模式的時(shí)候躯畴,這些情況都是我們應(yīng)該避免的谍咆,最常見(jiàn)的就是在DOCTYPE聲明前面出現(xiàn)了這些內(nèi)容:普通文本、HTML 標(biāo)簽私股、HTML 注釋摹察、XML 聲明、IE條件注釋倡鲸。
對(duì)于普通文本和HTML標(biāo)簽供嚎,各瀏覽器均進(jìn)入了混雜模式,這個(gè)很好理解峭状,都看到疑似的HTML文檔正文了克滴,瀏覽器就不需要再往下追查DOCTYPE在哪里了。
對(duì)于HTML注釋和XML聲明优床,它們和上面的普通文本和HTML標(biāo)簽有些差別劝赔,它們不會(huì)在頁(yè)面中展示出來(lái),即不可視胆敞。這時(shí)着帽,有的瀏覽器則顯得十分“智能”,非IE瀏覽器均會(huì)忽略它們的存在移层,DOCTYPE 被正確解析仍翰。但是在IE6中,DOCTYPE之前的 XML 聲明會(huì)導(dǎo)致頁(yè)面進(jìn)入混雜模式观话,而如果DOCTYPE之前出現(xiàn)了HTML注釋予借,則所有IE都會(huì)進(jìn)入混雜模式。有的作者很聰明,他既在DOCTYPE之前加入了他需要的內(nèi)容灵迫,卻又沒(méi)有使IE由于這些內(nèi)容而進(jìn)入混雜模式秦叛。他可能會(huì)這么寫(xiě):

<![if !IE]><!-- some comments --><![endif]>

<![if false]><!-- some comments --><![endif]>

上面這些IE條件注釋在非IE瀏覽器中,可能完全被忽略瀑粥,可能被解釋為普通HTML注釋挣跋。但是在IE中它們?nèi)肯Я耍驗(yàn)檫@就是IE條件注釋的作用利凑。所以這也是目前比較合適的在DOCTYPE之前寫(xiě)點(diǎn)什么又保證所有瀏覽器均為標(biāo)準(zhǔn)模式的做法,但我們?nèi)匀?strong>不推薦在DOCTYPE之前加入任何非空白內(nèi)容嫌术。

用JS判斷瀏覽器當(dāng)前的模式:

document.write(document.compatMode == "CSS1Compat" ? "當(dāng)前處于標(biāo)準(zhǔn)模式" : "當(dāng)前處于混雜模式");
image.png

標(biāo)準(zhǔn)模式(嚴(yán)格)下和混雜模式(傳統(tǒng))下的頁(yè)面渲染區(qū)別

(1 )盒模型:

在混雜模式下,盒模型為IE盒模型,border-box

image

而在W3C標(biāo)準(zhǔn)的盒模型中為

image

(2)圖片元素的垂直對(duì)齊方式:

對(duì)于inline元素和table-cell元素了赌,標(biāo)準(zhǔn)模式下vertical-align屬性默認(rèn)取值為baseline
在怪異模式下table單元格中的圖片的vertical-align屬性默認(rèn)取值為bottom悟狱,因此在圖片底部會(huì)有及像素的空間。

(3)<table>元素中的字體:

CSS中磷籍,對(duì)于font的屬性都是可以繼承的适荣,怪異模式下,對(duì)于table元素院领,字體的某些元素將不會(huì)從body等其他封裝元素中繼承得到弛矛,特別是font-size屬性。

(4)內(nèi)聯(lián)元素的尺寸:

標(biāo)準(zhǔn)模式下比然,non-replaced inline元素?zé)o法自定義大小丈氓,怪異模式下,定義這些元素的width强法,height屬性可以影響這些元素顯示的尺寸万俗。

(5)元素的百分比高度:

a:CSS中對(duì)于元素的百分比高度規(guī)定如下:百分比為元素包含塊的高度,不可為負(fù)值饮怯,如果包含塊的高度沒(méi)有顯示給出闰歪,該值等同于auto,所以百分比的高度必須在父元素有高度聲明的情況下使用蓖墅。

b:當(dāng)一個(gè)元素使用百分比高度時(shí)库倘,標(biāo)準(zhǔn)模式下,高度取決于內(nèi)容變化论矾,怪異模式下于樟,百分比高度被正確應(yīng)用。

(6)元素溢出的處理:

標(biāo)準(zhǔn)模式下拇囊,overflow取默認(rèn)值visible迂曲,在怪異模式下,該溢出會(huì)被當(dāng)做擴(kuò)展box來(lái)對(duì)待寥袭,即元素的大小由其內(nèi)容決定路捧,溢出不會(huì)裁減关霸,元素框自動(dòng)調(diào)整,包含溢出內(nèi)容杰扫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末队寇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子章姓,更是在濱河造成了極大的恐慌佳遣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凡伊,死亡現(xiàn)場(chǎng)離奇詭異零渐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)系忙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門诵盼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人银还,你說(shuō)我怎么就攤上這事风宁。” “怎么了蛹疯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵戒财,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捺弦,道長(zhǎng)固翰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任羹呵,我火速辦了婚禮骂际,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冈欢。我一直安慰自己歉铝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布凑耻。 她就那樣靜靜地躺著太示,像睡著了一般。 火紅的嫁衣襯著肌膚如雪香浩。 梳的紋絲不亂的頭發(fā)上类缤,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音邻吭,去河邊找鬼餐弱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膏蚓。 我是一名探鬼主播瓢谢,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驮瞧!你這毒婦竟也來(lái)了氓扛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤论笔,失蹤者是張志新(化名)和其女友劉穎采郎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體狂魔,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒜埋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毅臊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片理茎。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡黑界,死狀恐怖管嬉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朗鸠,我是刑警寧澤蚯撩,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站烛占,受9級(jí)特大地震影響胎挎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忆家,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一犹菇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芽卿,春花似錦揭芍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至筷转,卻和暖如春姑原,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呜舒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工锭汛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓店乐,卻偏偏與公主長(zhǎng)得像艰躺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眨八,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • [標(biāo)準(zhǔn)模式與混雜模式] 關(guān)于渲染模式:在多年以前(IE6誕生以前)腺兴,各瀏覽器都處于各自比較封閉的發(fā)展中(基本沒(méi)有兼...
    尹薩薩閱讀 1,709評(píng)論 0 0
  • 序章 談?wù)劇盀g覽器兼容性”的問(wèn)題段誊?很多前端的面試或筆試中闰蚕,都有比較籠統(tǒng)的“說(shuō)說(shuō)你所知道的各瀏覽器存在的兼容問(wèn)題”,...
    麻辣小隔壁閱讀 3,036評(píng)論 1 57
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案连舍? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • ??DOM 1 級(jí)主要定義的是 HTML 和 XML 文檔的底層結(jié)構(gòu)索赏。 ??DOM2 和 DOM3 級(jí)則在這個(gè)結(jié)構(gòu)...
    霜天曉閱讀 1,422評(píng)論 1 3
  • 一盼玄、HTML、XML潜腻、XHTML 有什么區(qū)別 1. HTML是什么埃儿? 描述網(wǎng)頁(yè)的一種語(yǔ)言 超文本標(biāo)記語(yǔ)言 (Hyp...
    饑人谷_CST閱讀 797評(píng)論 0 7