首頁技術文章正文

WEB前端培訓之javaScript 計算網頁內容的寬與高 (瀏覽器的標準模式與怪異模式)一

更新時間:2017-04-14 來源:黑馬程序員Web前端培訓學院 瀏覽量:

WEB前端培訓之javaScript 計算網頁內容的寬與高 (瀏覽器的標準模式與怪異模式)一

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

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

1. 瀏覽器要使老舊的網頁正常工作,但這部分網頁是沒有doctype聲明的,所以瀏覽器對沒有doctype聲明的網頁采用quirks mode解析。 
2. 對于擁有doctype聲明的網頁,什么瀏覽器采用何種模式解析,這里有一張詳細列表可參考:http://hsivonen.iki.fi/doctype/ 
3. 對于擁有doctype聲明的網頁,這里有幾條簡單的規(guī)則可用于判斷:對于那些瀏覽器不能識別的doctype聲明,瀏覽器采用strict mode解析 
4. 在doctype聲明中,沒有使用DTD聲明或者使用HTML4以下(不包括HTML4)的DTD聲明時,基本所有的瀏覽器都是使用quirks mode呈現(xiàn),其他的則使用strict mode解析。 
5. 可以這么說,在現(xiàn)有有doctype聲明的網頁,絕大多數(shù)是采用strict mode進行解析的。 
6. 在ie6中,如果在doctype聲明前有一個xml聲明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),則采用quirks mode解析。這條規(guī)則在ie7中已經移除了。
 
 
如何設置為怪異模式:
方法一:在頁面項部加 <!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ā)學院所有,歡迎轉載,轉載請注明作者出處,謝謝!
作者:黑馬程序員Web前端培訓學院;
首發(fā):http://www.pantone-color.com.cn/news/web.html 
8
分享到:
在線咨詢 我要報名
和我們在線交談!