1. 程式人生 > >瀏覽器的標準相容模式和怪異呈現模式以及盒模型

瀏覽器的標準相容模式和怪異呈現模式以及盒模型

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

 W3C標準推出以後,瀏覽器都開始採納新標準,但存在一個問題就是如何保證舊的網頁還能繼續瀏覽,在標準出來以前,很多頁面都是根據舊的渲染方法編寫的,如果用的標準來渲染,將導致頁面顯示異常。為保持瀏覽器渲染的相容性,使以前的頁面能夠正常瀏覽,瀏覽器都保留了舊的渲染方法(如:微軟的IE)。這樣瀏覽器渲染上就產生了Quircks mode和Standars mode,兩種渲染方法共存在一個瀏覽器上。

那麼瀏覽器究竟該採用哪種模式渲染呢?這就引出的DTD,既是網頁的頭部宣告,瀏覽器會通過識別DTD而採用相對應的渲染模式:
1. 瀏覽器要使老舊的網頁正常工作,但這部分網頁是沒有doctype宣告的,所以瀏覽器對沒有doctype宣告的網頁採用quirks mode解析。
2. 對於擁有doctype宣告的網頁,什麼瀏覽器採用何種模式解析,這裡有一張詳細列表可參考:http://hsivonen.iki.fi/doctype/
3. 對於擁有doctype宣告的網頁,這裡有幾條簡單的規則可用於判斷:對於那些瀏覽器不能識別的doctype宣告,瀏覽器採用strict mode解析
4. 在doctype宣告中,沒有使用DTD宣告或者使用HTML4以下(不包括HTML4)的DTD宣告時,基本所有的瀏覽器都是使用quirks mode呈現,其他的則使用strict mode解析。

5. 可以這麼說,在現有有doctype宣告的網頁,絕大多數是採用strict mode進行解析的。