基本介紹
- 中文名:怪異模式
- 外文名:quirks mode
- 領域:計算機
模式介紹,差異和示例,
模式介紹
一個網頁的結構與外觀由兩種標準化的語言的組合所描述:HTML,一種設計用於網頁的置標語言,描述頁面的結構與內容,和CSS,一種廣義的樣式表(en:stylesheet) 語言,用以指定頁面在不同媒介中(螢幕顯示器的視覺樣式,列印頁面時的列印樣式,頁面被螢幕閱讀器所閱讀時的聽覺樣式等)該如何被渲染。然而,多數舊的網頁瀏覽器沒有完全實施這些語言的定義或者在這些定義完成之前就已被開發(比如,Macintosh 平台上的 Microsoft Internet Explorer 版本 5.0 發行於 2000 年,在主流網頁瀏覽器中最早完全支持 CSS Level 1)。結果是,很多更早的網頁依賴於早期瀏覽器不完全或不正確的解析而構造,並且只有在被這樣的瀏覽器處理時才會如構想之中那樣渲染。
主流瀏覽器對標準化的 HTML 和 CSS 的支持已得到了顯著的提高,但是舊版的文檔中的很大一部分依賴於舊版瀏覽器的 quirks,對瀏覽器開發者形成了一個障礙,他們想提高它們對標準化的 HTML 及 CSS 的支持,卻同樣想對早期的非標準化頁面保持向後兼容。此外,很多新的網頁繼續以舊的方式被建造出來,由於瀏覽器開發者所引進的兼容性解決方案意味著對標準化方法的理解並不是嚴格必要的。
為了與可能數量眾多的網頁維持兼容,現代的網頁瀏覽器一般具有多種渲染模式:在“標準模式”(standards mode) 頁面按照 HTML 與 CSS 的定義渲染,而在“quirks 模式”中則嘗試模擬更舊的瀏覽器的行為。一些瀏覽器(例如,那些基於 Mozilla 的 Gecko 渲染引擎的,或者 Internet Explorer 8 在 strict mode 下)也使用一種嘗試於這兩者之間妥協的“近乎標準”(almost standards) 模式,實施了一種表單元格尺寸的怪異行為,除此之外符合標準定義。
差異和示例
在 quirks 模式和標準模式之間一個突出的不同是對 CSS IE盒模型缺陷的處理。在第 6 版之前,Internet Explorer 曾經使用一種決定一個元素的盒模型的寬度和高度的,與 CSS 規範所指定相衝突的算法,而且由於 Internet Explorer 的流行,很多依賴於這種不正確的算法的網頁被創建。而在版本 6, Internet Explorer 在標準模式下渲染時使用了 CSS 規範的算法,而在 quirks 模式下使用先前的,不規範的算法。
另一個值得一提的不同點是某些行內 (inline) 元素的垂直對齊;很多早期的瀏覽器對齊圖片至包含它們的盒子的下框線,雖然 CSS 的規範要求它們被對齊至盒內文本的基線。標準模式下,基於 Gecko 的瀏覽器將會對齊至基線,而在 quirks 模式下它們會對齊至底部。
此外,很多早期的瀏覽器對表格內部的字型樣式不實施繼承;結果是,字型樣式必須為整個文檔作為一個整體指定一次,並且為表格再次指定一次,儘管 CSS 規範要求字型樣式被繼承進表格。如果字號使用相對單位指定,一個標準兼容的瀏覽器會繼承基準字號,然後套用於表格內的相對字號:比如,一個聲明了基準字號為 80% 的頁面內聲明表格為 80% (以保證在不正確繼承字號的瀏覽器中有 80% 的字號)的字號將會,在一個標準兼容的瀏覽器里,顯示具有 64% 字號的表格。結果是,瀏覽器在怪異模式典型的不對表格繼承字號。