Standards模式和Quirks模式有什麼區別?

王铁柱6發表於2024-11-22

Standards 模式(標準模式)和 Quirks 模式(怪異模式)是瀏覽器渲染網頁的兩種不同模式,它們主要影響 HTML 和 CSS 的解釋方式。選擇哪種模式取決於網頁的 DOCTYPE 宣告。這兩種模式的存在是為了相容舊的網頁,因為早期的瀏覽器對標準的支援並不一致。

主要區別:

  • 盒模型: 這是最顯著的區別之一。在 Standards 模式下,盒模型的寬度計算方式是 content width。這意味著元素的 width 屬性只包含內容的寬度,不包括 padding 和 border。而在 Quirks 模式下,盒模型的寬度計算方式是 content width + padding + border。這意味著元素的 width 屬性包含了內容、padding 和 border 的寬度。

  • 圖片尺寸: 在 Quirks 模式下,一些圖片的尺寸計算方式可能與 Standards 模式不同,尤其是在沒有明確指定尺寸的情況下。

  • 行高: Quirks 模式和 Standards 模式下,行高的計算也可能存在差異,尤其是在使用百分比值時。

  • 表格單元格的垂直對齊: Quirks 模式下,表格單元格的內容預設垂直居中對齊。而在 Standards 模式下,預設是基線對齊。

  • 字型: Quirks 模式下,字型處理可能與 Standards 模式不同,尤其是在繼承方面。

  • font-size 繼承: 在 Quirks 模式中,<font> 元素的 font-size 屬性值會以畫素為單位繼承。而在 Standards 模式中,繼承的是計算值(computed value),這可能導致不同的顯示效果。

  • CSS 解析: 瀏覽器在 Quirks 模式下會模擬舊版瀏覽器的 CSS 解析行為,以相容舊的網頁。

DOCTYPE 的影響:

  • Standards 模式: 透過宣告正確的 DOCTYPE,例如 <!DOCTYPE html>,瀏覽器會切換到 Standards 模式。這是推薦的做法,因為它確保網頁按照最新的 HTML 和 CSS 標準進行渲染。

  • Quirks 模式: 如果沒有 DOCTYPE 宣告,或者使用了過時的 DOCTYPE,例如 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,瀏覽器會切換到 Quirks 模式。

  • Almost Standards 模式: 這是一種介於 Standards 模式和 Quirks 模式之間的模式。它觸發的方式是使用一些過渡型的 DOCTYPE,例如 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">。它與 Standards 模式非常相似,但仍保留一些 Quirks 模式的行為,例如圖片尺寸的計算。

總結:

為了確保網頁的跨瀏覽器相容性和一致性,強烈建議使用 <!DOCTYPE html> 來啟用 Standards 模式。避免使用 Quirks 模式,除非是為了維護非常古老的網頁。瞭解這兩種模式的區別可以幫助開發者更好地理解網頁的渲染行為,並避免潛在的相容性問題。

相關文章