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