由於歷史的原因,各個瀏覽器在對頁面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對頁面的渲染也不同。在w3c標準出台以前,瀏覽器在對頁面的渲染上沒有統一規範,產生了差異(quirks mode或者稱為compatibility mode);由於w3c標準的推出,瀏覽器渲染頁面有了統一的標準(csscompat或稱為strict mode也有叫做standars mode),這就是二者最簡單的區別。
w3c標準推出以後,瀏覽器都開始採納新標準,但存在乙個問題就是如何保證舊的網頁還能繼續瀏覽,在標準出來以前,很多頁面都是根據舊的渲染方法編寫的,如果用的標準來渲染,將導致頁面顯示異常。為保持瀏覽器渲染的相容性,使以前的頁面能夠正常瀏覽,瀏覽器都保留了舊的渲染方法(如:微軟的ie)。這樣瀏覽器渲染上就產生了quircks mode和standars mode,兩種渲染方法共存在乙個瀏覽器上。
火狐一直工作在標準模式下,但ie(6,7,8)標準模式與怪異模式差別很大,主要體現在對盒子模型的解釋上,這個很重要,下面就重點說這個。那麼瀏覽器究竟該採用哪種模式渲染呢?這就引出的dtd,既是網頁的頭部宣告,瀏覽器會通過識別dtd而採用相對應的渲染模式:
1. 瀏覽器要使老舊的網頁正常工作,但這部分網頁是沒有doctype宣告的,所以瀏覽器對沒有doctype宣告的網頁採用quirks mode解析。
2. 對於擁有doctype宣告的網頁,什麼瀏覽器採用何種模式解析,這裡有一張詳細列表可參考:
3. 對於擁有doctype宣告的網頁,這裡有幾條簡單的規則可用於判斷:對於那些瀏覽器不能識別的doctype宣告,瀏覽器採用strict mode解析。
4. 在doctype宣告中,沒有使用dtd宣告或者使用html4以下(不包括html4)的dtd宣告時,基本所有的瀏覽器都是使用quirks mode呈現,其他的則使用strict mode解析。
5. 可以這麼說,在現有有doctype宣告的網頁,絕大多數是採用strict mode進行解析的。
6. 在ie6中,如果在doctype宣告前有乙個xml宣告(比如:<?xml version=」1.0″ encoding=」iso-8859-1″?>),則採用quirks mode解析。這條規則在ie7中已經移除了。
如何設定為怪異模式:
方法一:在頁面項部加
方法二:什麼也不加。
如何設定為標準模式:
加入以下任意一種:html4提供了三種doctype可選擇:
xhtml1.0提供了三種doctype可選擇:
(1)過渡型(transitional )
(2)嚴格型(strict )
(3)框架型(frameset )
如何判定現在是標準模式還是怪異模式:
方法一:執行以下**
alert(window.top.document.compatmode) ;
//backcompat 表示怪異模式
//css1compat 表示標準模式
方法二:jquery為我們提供的方法,如下:
alert($.boxmodel)
alert($.support.boxmodel)
瀏覽器的怪異模式與標準模式
在html與css的標準化未完成之前,各個瀏覽器對於html和css的解析有各自不同的實現,而有很多舊的網頁都是按照這些非標準的實現去設計的。在html與css標準確定之後,瀏覽器一方面要按照標準去實現對html與css的支援,另一方面又要保證對非標準的舊網頁設計的後向相容性。因此,現代的瀏覽器一般...
瀏覽器的標準模式與怪異模式
由於歷史的原因,各個瀏覽器在對頁面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對頁面的渲染也不同。在w3c標準出台以前,瀏覽器在對頁面的渲染上沒有統一規範,產生了差異 quirks mode或者稱為compatibility mode 由於w3c標準的推出,瀏覽器渲染頁面有了統一的標準 cssco...
瀏覽器標準模式和怪異模式
要想寫出跨瀏覽器的css,必須知道瀏覽器解析css的兩種模式 標準模式 strict mode 和怪異模式 quirks mode 所謂的標準模式是指,瀏覽器按w3c標準解析執行 怪異模式則是使用瀏覽器自己的方式解析執行 因為不同瀏覽器解析執行的方式不一樣,所以我們稱之為怪異模式。瀏覽器解析時到底使...