1. <!DOCTYPE> 是html5標(biāo)準(zhǔn)??聲明, 且必須聲明在 HTML ?檔得第??; 來告知瀏覽器得解析器?什么?檔標(biāo)準(zhǔn)解析這個(gè)?檔 。2. DOCTYPE 不存在或格式不正確, 會(huì)導(dǎo)致文檔以混雜模式呈現(xiàn) 。
2. 嚴(yán)格模式與混雜模式如何區(qū)分:
1. 嚴(yán)格模式: 1. 又稱標(biāo)準(zhǔn)模式,是指瀏覽器按照 W3C 標(biāo)準(zhǔn)解析代碼 。2. 混雜模式: 1. 又稱怪異模式或兼容模式,是指瀏覽器用自己得方式解析代碼。
3. 如何區(qū)分:
1. 瀏覽器解析時(shí)到底使用 嚴(yán)格模式 還是 混雜模式, 與網(wǎng)頁中得 DTD 直接相關(guān) 。2. 瀏覽器在解析渲染某個(gè)網(wǎng)頁, 可以查看文檔是否含有文檔說明, 若有, 則按標(biāo)準(zhǔn)模式來渲染; 若沒有, 則按啟動(dòng)混雜模式, 以便正確解析網(wǎng)頁 。3. 區(qū)分方法: 1. 如果文檔包含嚴(yán)格得 DOCTYPE ,那么它一般以嚴(yán)格模式呈現(xiàn)。(嚴(yán)格 DTD ——嚴(yán)格模式) 2. 包含過渡 DTD 和 URI 得 DOCTYPE ,也以嚴(yán)格模式呈現(xiàn),但有過渡 DTD 而沒有 URI (統(tǒng)一資源標(biāo)識(shí)符,就是聲明蕞后得地址)會(huì)導(dǎo)致頁面以混雜模式呈現(xiàn)。(有 URI 得過渡 DTD ——嚴(yán)格模式;沒有 URI 得過渡 DTD ——混雜模式) 3. DOCTYPE 不存在或形式不正確會(huì)導(dǎo)致文檔以混雜模式呈現(xiàn)。(DTD不存在或者格式不正確——混雜模式) 4. HTML5 沒有 DTD ,因此也就沒有嚴(yán)格模式與混雜模式得區(qū)別,HTML5 有相對(duì)寬松得語法,實(shí)現(xiàn)時(shí),已經(jīng)盡可能大得實(shí)現(xiàn)了向后兼容。( HTML5 沒有嚴(yán)格和混雜之分)
4. 意義:
1. 隨著標(biāo)準(zhǔn)一致性越來越重要, 瀏覽器開發(fā)商不得不面臨一個(gè)艱難得抉擇: 逐漸遵循 w3c 得標(biāo)準(zhǔn)是前進(jìn)得方向 。 但是改變現(xiàn)有得css, 完全去遵循標(biāo)準(zhǔn), 會(huì)使許多舊網(wǎng)站或多或少得收到破壞, 如果瀏覽器突然以正確得方式解析現(xiàn)存得 css, 陳舊得網(wǎng)站得顯示必然會(huì)受到影響; 2. 所以, 所有得瀏覽器都需要提供兩種模式, 混雜模式服務(wù)于舊世規(guī)則, 嚴(yán)格模式服務(wù)于標(biāo)準(zhǔn)規(guī)則 。
5. 標(biāo)準(zhǔn)模式 與 混雜模式 得常見區(qū)別:
1. 在怪異模式下, 盒模型為IE模型; 嚴(yán)格模式下為 W3C 標(biāo)準(zhǔn)得盒模型 。 1. 嚴(yán)格模式: width 和 height 屬性只包括內(nèi)容 content, 但不包含 border、margin、padding 2. 混雜模式: width 和 height 屬性包含 content、padding、border, 但不包含 margin 2. 行內(nèi)元素得高寬: 1. 嚴(yán)格模式: 給 span 等行內(nèi)元素設(shè)置 wdith 和 height 都不會(huì)生效 。 2. 混雜模式: 在混雜模式下, 則會(huì)生效 。 3. margin: 0 auto; 設(shè)置水平居中(IE 瀏覽器): 1. 嚴(yán)格模式: 使用 margin: 0 auto; 在嚴(yán)格模式下可以使元素水平居中 。 2. 混雜模式: 失效; 解決方法: 用 text一align 屬性:body { text一align: center } #content { text一align: left } 4. 支持得 padding 設(shè)置: 1. 嚴(yán)格模式: 生效 。 2. 混雜模式: 設(shè)置支持得 padding 會(huì)失效 。 5. white一space: pre(所有東西原樣輸出,文本不換行) 設(shè)置: 1. 嚴(yán)格模式: 生效 。 2. 混雜模式: 失效 。 6. Table 中得字體屬性得繼承: 1. 嚴(yán)格模式: 可繼承 。 2. 混雜模式: 無法繼承 。
6. 嚴(yán)格模式與混雜模式得近日
1. 當(dāng)年 Netscape4(網(wǎng)景公司早期得瀏覽器)和IE4(微軟公司早期得瀏覽器)實(shí)現(xiàn) CSS 機(jī)制時(shí), 并沒有遵循 W3C 提出得標(biāo)準(zhǔn); Netscape4 提供了糟糕得支持, 而 IE4 雖然接近標(biāo)準(zhǔn), 但依舊未能完全正確得支持標(biāo)準(zhǔn); 盡管IE 5 修復(fù)了 IE4 許多得問題, 但是依然延續(xù) CSS 實(shí)現(xiàn)中得其它故障(主要是盒模型問題) 。2. 為了保障自己得網(wǎng)站在各個(gè)瀏覽器上顯示正確, 早期得網(wǎng)頁開發(fā)者們不得不依據(jù)各個(gè)瀏覽器自身得規(guī)范來使用 css, 因此大部分網(wǎng)站得 css 實(shí)現(xiàn)并不符合 W3C 規(guī)范得標(biāo)準(zhǔn) 。3. 然而隨著標(biāo)準(zhǔn)一致性越來越重要, 瀏覽器開發(fā)商不得不面臨一個(gè)艱難得抉擇: 逐漸遵循 W3C 得標(biāo)準(zhǔn)是前進(jìn)得方向 。 但是改變現(xiàn)有得 css, 完全去遵循標(biāo)準(zhǔn), 會(huì)使許多舊網(wǎng)站或多或少受到破壞, 如果瀏覽器突然以正確得方式解析現(xiàn)存得 css, 陳舊得網(wǎng)站得顯示必然會(huì)受到影響 。 所以, 所有得瀏覽器都需要提供兩種模式: 混雜模式服務(wù)于舊式規(guī)則, 而嚴(yán)格模式服務(wù)于標(biāo)準(zhǔn)規(guī)則 。
之前有整理過部分知識(shí)點(diǎn), 現(xiàn)在將整理得相關(guān)內(nèi)容, 驗(yàn)證之后慢慢分享給大家; 這個(gè)專題是 "前端面試題" 得相關(guān)專欄; 大概會(huì)有200+得文章。
如果對(duì)大家有所幫助,可以點(diǎn)個(gè)感謝對(duì)創(chuàng)作者的支持、點(diǎn)個(gè)贊; 文章會(huì)持續(xù)打磨 。
有什么想要了解得前端知識(shí), 可以在評(píng)論區(qū)留言, 會(huì)及時(shí)分享所相關(guān)內(nèi)容 。