調試一個頁面,ie下面頁面css樣式非常奇怪,各類失效。找了半天緣由不知道怎麼回事。最後在調試工具中發現,文檔模式爲quirk,改爲別的(IE 7|8|9)正常。javascript
爲何會自動選擇此文檔模式呢?css
先看看什麼是quirk模式,引用一段:http://www.microsoft.com/china/msdn/library/webservices/asp.net/ASPNETusStan.mspx?mfr=truehtml
爲 Web頁指定 DOCTYPE 會影響瀏覽器呈現頁的方式。Internet Explorer、Mozilla Firefox 和 Opera 全都支持一種名爲「DOCTYPE 切換」(也叫「DOCTYPE 嗅探」)的功能。
引入 DOCTYPE 切換的目的是使瀏覽器可以正確地呈現符合標準的 Web 站點以及舊式 Web 站點。大多數 Web 站點被開發爲呈現 HTML 頁而不是 XHTML 頁。瀏覽器經過判斷是否存在 DOCTYPE 來肯定什麼時候應該使用標準來呈現頁。
Internet Explorer 6+ 支持兩種呈現模式,分別叫作 Quirks 模式和 Standards 模式。當 Internet Explorer 呈現包含有效 XHTML(或 HTML 4.0)DOCTYPE 的頁時,它會以 Standards 模式呈現該頁;不然,它會以 Quirks模式呈現該頁(有關詳細信息,請參閱 CSS Enhancements in Internet Explorer 6)。
Opera 瀏覽器 (Opera 7+) 支持與 Internet Explorer 相同的兩種呈現模式:Quirks 和 Standards(有關詳細信息,請參閱 http://www.opera.com/docs/specs/doctype/)。
Mozilla Firefox 1+ 支持三種呈現模式:Quirks 模式、Almost Standards 模式和 Standards 模式。Firefox 的 Almost Standards 模式對應於 Internet Explorer 和 Opera 的 Standards 模式。當頁包含有效的 XHTML 1.0 Transitional DOCTYPE(而且該頁被分配爲 text/html MIME 類型)時,Firefox 會以 Almost Standards 模式呈現該頁。當頁包含 XHTML 1.0 Strict 或 XHTML 1.1 DOCTYPE(或者該頁被分配爲 XML MIME 類型)時,該頁將以 Standards 模式呈現(有關詳細信息,請參閱 http://www.mozilla.org/docs/web-developer/quirks/doctypes.html)。
能夠經過臨時向頁中添加如下客戶端腳本(該腳本在最新版本的 Internet Explorer、Firefox 和 Opera 中有效)肯定瀏覽器的當前呈現模式。
<script type="text/javascript"> alert( document.compatMode ); </script>
您須要關心瀏覽器的呈現模式,由於它會影響將層疊樣式表應用於該頁的方式。若是將現有 HTML 頁轉換爲 XHTML 頁,那麼在瀏覽器中打開它們時,它們可能看起來很是不一樣。
例如,Internet Explorer 以不一樣方式計算頁元素的大小,這取決於呈現模式(它使用不一樣的 CSS Box Model)。在 Quirks 模式下,元素的寬度是經過將元素的內容、內邊距、邊框和邊距相加而計算獲得的。在 Standards 模式下,元素的寬度是隻考慮元素內容的寬度而計算獲得的。
quirks和standards的區別不少均可以歸爲IE5和IE6的區別。java
body{text-align:center};#{content:text-align:left}