首頁(yè)技術(shù)文章正文

WEB前端培訓(xùn)之javaScript 計(jì)算網(wǎng)頁(yè)內(nèi)容的寬與高 (瀏覽器的標(biāo)準(zhǔn)模式與怪異模式)一

更新時(shí)間:2017-05-24 來源:黑馬程序員web前端培訓(xùn)學(xué)院 瀏覽量:

WEB前端培訓(xùn)之javaScript 計(jì)算網(wǎng)頁(yè)內(nèi)容的寬與高 (瀏覽器的標(biāo)準(zhǔn)模式與怪異模式)一

標(biāo)準(zhǔn)模式與怪異模式:
       由于歷史的原因,各個(gè)瀏覽器在對(duì)頁(yè)面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對(duì)頁(yè)面的渲染也不同。在W3C標(biāo)準(zhǔn)出臺(tái)以前,瀏覽器在對(duì)頁(yè)面的渲染上沒有統(tǒng)一規(guī)范,產(chǎn)生了差異(Quirks mode或者稱為Compatibility Mode);由于W3C標(biāo)準(zhǔn)的推出,瀏覽器渲染頁(yè)面有了統(tǒng)一的標(biāo)準(zhǔn)(CSScompat或稱為Strict mode也有叫做Standars mode),這就是二者最簡(jiǎn)單的區(qū)別。 

    W3C標(biāo)準(zhǔn)推出以后,瀏覽器都開始采納新標(biāo)準(zhǔn),但存在一個(gè)問題就是如何保證舊的網(wǎng)頁(yè)還能繼續(xù)瀏覽,在標(biāo)準(zhǔn)出來以前,很多頁(yè)面都是根據(jù)舊的渲染方法編寫的,如果用的標(biāo)準(zhǔn)來渲染,將導(dǎo)致頁(yè)面顯示異常。為保持瀏覽器渲染的兼容性,使以前的頁(yè)面能夠正常瀏覽,瀏覽器都保留了舊的渲染方法(如:微軟的IE)。這樣瀏覽器渲染上就產(chǎn)生了Quircks mode和Standars mode,兩種渲染方法共存在一個(gè)瀏覽器上。 
    
火狐一直工作在標(biāo)準(zhǔn)模式下,但I(xiàn)E(6,7,8)標(biāo)準(zhǔn)模式與怪異模式差別很大,主要體現(xiàn)在對(duì)盒子模型的解釋上,這個(gè)很重要,下面就重點(diǎn)說這個(gè)。
 
 
 
 那么瀏覽器究竟該采用哪種模式渲染呢?這就引出的DTD,既是網(wǎng)頁(yè)的頭部聲明,瀏覽器會(huì)通過識(shí)別DTD而采用相對(duì)應(yīng)的渲染模式: 

1. 瀏覽器要使老舊的網(wǎng)頁(yè)正常工作,但這部分網(wǎng)頁(yè)是沒有doctype聲明的,所以瀏覽器對(duì)沒有doctype聲明的網(wǎng)頁(yè)采用quirks mode解析。 
2. 對(duì)于擁有doctype聲明的網(wǎng)頁(yè),什么瀏覽器采用何種模式解析,這里有一張?jiān)敿?xì)列表可參考:http://hsivonen.iki.fi/doctype/ 
3. 對(duì)于擁有doctype聲明的網(wǎng)頁(yè),這里有幾條簡(jiǎn)單的規(guī)則可用于判斷:對(duì)于那些瀏覽器不能識(shí)別的doctype聲明,瀏覽器采用strict mode解析 
4. 在doctype聲明中,沒有使用DTD聲明或者使用HTML4以下(不包括HTML4)的DTD聲明時(shí),基本所有的瀏覽器都是使用quirks mode呈現(xiàn),其他的則使用strict mode解析。 
5. 可以這么說,在現(xiàn)有有doctype聲明的網(wǎng)頁(yè),絕大多數(shù)是采用strict mode進(jìn)行解析的。 
6. 在ie6中,如果在doctype聲明前有一個(gè)xml聲明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),則采用quirks mode解析。這條規(guī)則在ie7中已經(jīng)移除了。
 
 
如何設(shè)置為怪異模式:
方法一:在頁(yè)面項(xiàng)部加 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
我們用Eclipse的HTML模板新建的html頁(yè)面,自動(dòng)就有上面東東
 
方法二:什么也不加。
 
這里有一張?jiān)敿?xì)列表可參考:http://hsivonen.iki.fi/doctype/
 
 
如何設(shè)置為標(biāo)準(zhǔn)模式:
加入以下任意一種:
HTML4提供了三種DOCTYPE可選擇:
<!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//EN" "http://www.w3.org/TR/html4/strict.dtd">  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 
 
XHTML1.0提供了三種DOCTYPE可選擇:
(1)過渡型(Transitional )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
(2)嚴(yán)格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
(3)框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
 
 
這里有一張?jiān)敿?xì)列表可參考:http://hsivonen.iki.fi/doctype/
 
 
本文版權(quán)歸黑馬程序員web前端開發(fā)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處,謝謝!
作者:黑馬程序員web前端培訓(xùn)學(xué)院;
首發(fā):http://www.itcast.cn/web/ 
8
分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!