Doctype作用?嚴格模式與混雜模式如何區分?它們有何差異?


一、Doctype作用是什么?

<!DOCTYPE>聲明叫做文件類型定義(DTD),聲明的作用為了告訴瀏覽器該文件的類型。讓瀏覽器解析器知道應該用哪個規范來解析文檔。<!DOCTYPE>聲明必須在 HTML 文檔的第一行,這並不是一個 HTML 標簽。

二、嚴格模式與混雜模式如何區分?它們有何意義?


嚴格模式:又稱標准模式,是指瀏覽器按照 W3C 標准解析代碼。

混雜模式:又稱怪異模式或兼容模式,是指瀏覽器用自己的方式解析代碼。

如何區分:瀏覽器解析時到底使用嚴格模式還是混雜模式,與網頁中的 DTD 直接相關。

1、如果文檔包含嚴格的 DOCTYPE ,那么它一般以嚴格模式呈現。(嚴格 DTD ——嚴格模式) 
2、包含過渡 DTD 和 URI 的 DOCTYPE ,也以嚴格模式呈現,但有過渡 DTD 而沒有 URI (統一資源標識符,就是聲明最后的地址)會導致頁面以混雜模式呈現。(有 URI 的過渡 DTD ——嚴格模式;沒有 URI 的過渡 DTD ——混雜模式) 
3、DOCTYPE 不存在或形式不正確會導致文檔以混雜模式呈現。(DTD不存在或者格式不正確——混雜模式)
4、HTML5 沒有 DTD ,因此也就沒有嚴格模式與混雜模式的區別,HTML5 有相對寬松的語法,實現時,已經盡可能大的實現了向后兼容。( HTML5 沒有嚴格和混雜之分)

意義:嚴格模式與混雜模式存在的意義與其來源密切相關,如果說只存在嚴格模式,那么許多舊網站必然受到影響,如果只存在混雜模式,那么會回到當時瀏覽器大戰時的混亂,每個瀏覽器都有自己的解析模式。

三、嚴格模式與混雜模式的語句解析不同點有哪些?

1)盒模型的高寬包含內邊距padding和邊框border

 

    在W3C標准中,如果設置一個元素的寬度和高度,指的是元素內容的寬度和高度,而在IE5.5及以下的瀏覽器及其他版本的Quirks模式下,IE的寬度和高度還包含了padding和border。

2)可以設置行內元素的高寬

    在Standards模式下,給span等行內元素設置wdith和height都不會生效,而在quirks模式下,則會生效。

3)可設置百分比的高度

    在standards模式下,一個元素的高度是由其包含的內容來決定的,如果父元素沒有設置高度,子元素設置一個百分比的高度是無效的。

4)用margin:0 auto設置水平居中在IE下會失效

    使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下卻會失效,quirk模式下的解決辦法,用text-align屬性:

   body{text-align:center};#content{text-align:left}

5)quirk模式下設置圖片的padding會失效

6)quirk模式下Table中的字體屬性不能繼承上層的設置

7)quirk模式下white-space:pre會失效


補充內容:

一、常用的具體聲明:

1、HTML5(一種):<!DOCTYPE html>

2、HTML 4.01(三種):嚴格模式包含所有 HTML 元素和屬性,但不包括展示性的和棄用的元素(比如 font),不允許框架集(Framesets);過渡模式包含所有 HTML 元素和屬性,包括展示性的和棄用的元素(比如 font),不允許框架集(Framesets);框架模式等同於過渡模式,但允許框架集內容。 

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">

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

3、XHTML 1.0(四種):前三種模式同上,XHML 必須以格式正確的 XML 來編寫標記。 

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

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

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

XHTML 1.1 該 DTD 等同於 XHTML 1.0 Strict,但允許添加模型。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

二、嚴格模式與混雜模式的來源


當年Netscape4(網景公司早期的瀏覽器)和IE4(微軟公司早期的瀏覽器)實現CSS機制時,並沒有遵循W3C提出的標准。Netscape4 提供了糟糕的支持,而IE4 雖然接近標准,但依舊未能完全正確的支持標准。盡管IE 5 修復了IE4 許多的問題,但是依然延續CSS實現中的其它故障(主要是盒模型問題)。

為了保障自己的網站在各個瀏覽器上顯示正確,網頁開發者們不得不依據各個瀏覽器自身的規范來使用css,因此大部分網站的css實現並不符合W3C規范的標准。

然而隨着標准一致性越來越重要,瀏覽器開發商不得不面臨一個艱難的抉擇:逐漸遵循W3C的標准是前進的方向。但是改變現有的 css,完全去遵循標准,會使許多舊網站或多或少受到破壞,如果瀏覽器突然以正確的方式解析現存的css,陳舊的網站的顯示必然會受到影響。所以,所有的瀏覽器都需要提供兩種模式:混雜模式服務於舊式規則,而嚴格模式服務於標准規則。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM