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://xamj520.com/web/ 8