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