Strict和Quirk模式下的差異

Strict和Quirk模式下的差異。


要想寫出跨瀏覽器的CSS,必須知道瀏覽器解析CSS的兩種模式:標準模式(strict mode)和怪異模式(quirks mode)。

所謂的標準模式是指,瀏覽器按W3C標準解析執行代碼;怪異模式則是使用瀏覽器自己的方式解析執行代碼,因爲不同瀏覽器解析執行的方式不一樣,所以我們稱之爲怪異模式。瀏覽器解析時到底使用標準模式還是怪異模式,與你網頁中的DTD聲明直接相關,DTD聲明定義了標準文檔的類型(標準模式解析)文檔類型,會使瀏覽器使用相應的方式加載網頁並顯示,忽略DTD聲明,將使網頁進入怪異模式(quirks mode)。

<html>
    <head>
        <title>重慶PHP</title>
    </head>
    <body>
        <h3>重慶PHP,最專業的PHP社區</h3>
    </body>
</html>

如果你的網頁代碼不含有任何聲明,那麼瀏覽器就會採用怪異模式解析,便是如果你的網頁代碼含有DTD聲明,瀏覽器就會按你所聲明的標準解析。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>重慶PHP</title>
    </head>
    <body>
        <h3>重慶PHP,最專業的PHP社區</h3>
    </body>
</html>

上面的代碼,瀏覽器會按HTML 4.01的標準進行解析。

到底標準模式和怪異模式有什麼不同呢?在我之前的文章《IE到底認不認識!important聲明》中已經說過,標準模式中

IE6不認識!important聲明,IE7、IE8、Firefox、Chrome等瀏覽器認識;而在怪異模式中,IE6/7/8都不認識!important聲明,這只是區別的一種,還有很多其它區別。所以,要想寫出跨瀏覽器的CSS,你必須採用標準模式。好像太絕對了,呵呵。好吧,要想寫出跨瀏覽器CSS,你最好採用標準模式。

到底都有哪些聲明呢?哪種聲明更好呢?我們建議你使用XHTML 1.0最嚴格模式,從一開始我們就應該嚴格的要求自己。

具體聲明如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<!-- 如果你接手的是一個遺留網頁,最初並沒有DTD聲明,並且使用了很多在XHTML中已經廢除的標籤,那麼,我們建議你使用XHTML兼容模式,聲明如下: -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Quirk和Strict模式的區別:

盒子模型渲染模式的不同

在strict mode中:
width是內容寬度,也就是說,元素真正的寬度 =

margin-left  +  border-left-width  +  padding-left  + width  +  padding-right  +  border-right-width  +  margin-right;

在quirks mode中:
width則是元素的實際寬度,內容寬度 =

 width  -  (margin-left  +  margin-right  +  padding-left  +  padding-right  +  border-left-width  +  border-right-width)

使用document.compatMode 可顯示爲什麼模式

在quirks mode 和 strict mode中還有一個區別,但沒經過驗證,我只是發現有這個現象。

在strict mode中,
table的css屬性font-size會繼承父級元素的,也就是說,table中的字體大小會繼承父級元素字體的大小。
在quirks mode中,
table的css屬性font-size不會繼承父級元素的,需要專門設置一下。也就是說,table中的字體大小不會繼承父級元素字體的大小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章