WEB前端培訓之javaScript 計算網(wǎng)頁內(nèi)容的寬與高 (瀏覽器的標準模式與怪異模式)一
標準模式與怪異模式:
由于歷史的原因,各個瀏覽器在對頁面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對頁面的渲染也不同。在W3C標準出臺以前,瀏覽器在對頁面的渲染上沒有統(tǒng)一規(guī)范,產(chǎn)生了差異(Quirks mode或者稱為Compatibility Mode);由于W3C標準的推出,瀏覽器渲染頁面有了統(tǒng)一的標準(CSScompat或稱為Strict mode也有叫做Standars mode),這就是二者最簡單的區(qū)別。
W3C標準推出以后,瀏覽器都開始采納新標準,但存在一個問題就是如何保證舊的網(wǎng)頁還能繼續(xù)瀏覽,在標準出來以前,很多頁面都是根據(jù)舊的渲染方法編寫的,如果用的標準來渲染,將導致頁面顯示異常。為保持瀏覽器渲染的兼容性,使以前的頁面能夠正常瀏覽,瀏覽器都保留了舊的渲染方法(如:微軟的IE)。這樣瀏覽器渲染上就產(chǎn)生了Quircks mode和Standars mode,兩種渲染方法共存在一個瀏覽器上。
火狐一直工作在標準模式下,但IE(6,7,8)標準模式與怪異模式差別很大,主要體現(xiàn)在對
盒子模型的解釋上,這個很重要,下面就重點說這個。
那么瀏覽器究竟該采用哪種模式渲染呢?這就引出的DTD,既是網(wǎng)頁的頭部聲明,瀏覽器會通過識別DTD而采用相對應的渲染模式:
1. 瀏覽器要使老舊的網(wǎng)頁正常工作,但這部分網(wǎng)頁是沒有doctype聲明的,所以瀏覽器對沒有doctype聲明的網(wǎng)頁采用quirks mode解析。
2. 對于擁有doctype聲明的網(wǎng)頁,什么瀏覽器采用何種模式解析,這里有一張詳細列表可參考:
http://hsivonen.iki.fi/doctype/
3. 對于擁有doctype聲明的網(wǎng)頁,這里有幾條簡單的規(guī)則可用于判斷:對于那些瀏覽器不能識別的doctype聲明,瀏覽器采用strict mode解析
4. 在doctype聲明中,沒有使用DTD聲明或者使用HTML4以下(不包括HTML4)的DTD聲明時,基本所有的瀏覽器都是使用quirks mode呈現(xiàn),其他的則使用strict mode解析。
5. 可以這么說,在現(xiàn)有有doctype聲明的網(wǎng)頁,絕大多數(shù)是采用strict mode進行解析的。
6. 在ie6中,如果在doctype聲明前有一個xml聲明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),則采用quirks mode解析。這條規(guī)則在ie7中已經(jīng)移除了。
如何設置為怪異模式:
方法一:在頁面項部加 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
我們用Eclipse的HTML模板新建的html頁面,自動就有上面東東
方法二:什么也不加。
這里有一張詳細列表可參考:
http://hsivonen.iki.fi/doctype/
如何設置為標準模式:
加入以下任意一種:
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)嚴格型(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">
這里有一張詳細列表可參考:
http://hsivonen.iki.fi/doctype/
本文版權歸傳智播客web前端開發(fā)學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處,謝謝!
作者:傳智播客web前端培訓學院;
首發(fā):http://metathetuscanyresort.com/web/ 8