Doctype的作用?標準模式與兼容模式各有什么區(qū)別??
Doctype是document type(文檔類型)的簡寫,用來告訴瀏覽器的解析器使用哪種HTML或XHTML規(guī)范解析頁面。DOCTYPE不存在或格式不正確會導(dǎo)致文檔以兼容模式呈現(xiàn)。文檔類型有3種:Strict(嚴格)、Transitional(過渡)以及Frameset(基于框架)。標準模式的排版和JS運作模式都是以該瀏覽器支持的最高標準運行。在兼容模式中,頁面以寬松的向后兼容的方式顯示,模擬老式瀏覽器的行為以防止站點無法工作。簡單的說,就是盡可能的能顯示東西給用戶看。
具體的說二者的不同在于:
1.width不同
在嚴格模式中 :width是內(nèi)容寬度 ,元素真正的寬度 = margin-left + border-left-width + padding-left + width + padding-right + border-right- width +? margin-right;
在兼容模式中 :width則是元素的實際寬度 ,內(nèi)容寬度 = width - ( padding-left + padding-right + border-left-width + border-right-width)
2.兼容模式下可設(shè)置百分比的高度和行內(nèi)元素的高寬
在Standards模式下,給span等行內(nèi)元素設(shè)置wdith和height都不會生效,而在兼容模式下,則會生效。
在standards模式下,一個元素的高度是由其包含的內(nèi)容來決定的,如果父元素沒有設(shè)置高度,子元素設(shè)置一個百分比的高度是無效的。
3.用margin:0 auto設(shè)置水平居中在IE下會失效
使用margin:0 auto在standards模式下可以使元素水平居中,但在兼容模式下卻會失效(用text-align屬性解決)
body{text-align:center};#content{text-align:left}
4.兼容模式下Table中的字體屬性不能繼承上層的設(shè)置,white-space:pre會失效,設(shè)置圖片的padding會失效
HTML5 為什么只需要<!DOCTYPE HTML>呢?
DTD的是W3C所發(fā)布的一個文檔類型定義,簡單的說,就是告訴瀏覽器你的這個HTML,是根據(jù)那個標準寫的,解析的時候用哪個標準解析。
HTML5 不基于 SGML,因此不需要對DTD進行引用,但是需要doctype來規(guī)范瀏覽器的行為(讓瀏覽器按照它們應(yīng)該的方式來運行)。
而HTML4.01基于SGML,所以需要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。