怪癖模式

在 Web 的早期,页面通常以两种版本编写:一种用于 Netscape Navigator,另一种用于 Microsoft Internet Explorer。当 W3C 制定 Web 标准时,浏览器不能立即开始使用它们,因为这样做会破坏 Web 上的大多数现有网站。因此,浏览器引入了两种模式来区分新的符合标准的网站和旧的传统网站。

现在,Web 浏览器中的布局引擎使用三种模式:怪癖模式、有限怪癖模式和无怪癖模式。在 **怪癖模式** 中,布局模拟 Navigator 4 和 Internet Explorer 5 中的行为。这对于支持在 Web 标准广泛采用之前构建的网站至关重要。在 **无怪癖模式** 中,行为是 (希望) 现代 HTML 和 CSS 规范中描述的所需行为。在 **有限怪癖模式** 中,只实现极少数的怪癖。

有限怪癖模式和无怪癖模式过去分别被称为“几乎标准”模式和“完全标准”模式。这些名称已更改,因为行为现在已标准化。

浏览器如何确定使用哪种模式?

对于 HTML 文档,浏览器使用文档开头的 DOCTYPE 来决定是将其以怪癖模式还是标准模式处理。为了确保您的页面使用完全标准模式,请确保您的页面具有类似于以下示例中的 DOCTYPE

html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Hello World!</title>
  </head>
  <body></body>
</html>

示例中显示的 DOCTYPE,<!DOCTYPE html>,是最简单的,也是当前 HTML 标准推荐的。HTML 标准的早期版本推荐了其他变体,但所有现有的浏览器今天都会对该 DOCTYPE 使用完全标准模式。没有使用更复杂 DOCTYPE 的合理理由。如果您确实使用其他 DOCTYPE,您可能会冒使用触发几乎标准模式或怪癖模式的 DOCTYPE 的风险。

将 DOCTYPE 放在 HTML 文档的开头,在任何其他内容之前。

<!DOCTYPE html> 的唯一目的是激活无怪癖模式。HTML 标准 DOCTYPE 的旧版本提供了额外的含义,但没有浏览器曾经将 DOCTYPE 用于除了切换渲染模式之外的任何其他目的。

另请参阅对 不同浏览器选择各种模式的时间 的详细描述。

XHTML

如果您使用 Content-Type HTTP 标头中的 application/xhtml+xml MIME 类型将页面作为 XHTML 提供,则不需要 DOCTYPE 来启用标准模式,因为此类文档始终使用“完全标准模式”。

如果您使用 text/html MIME 类型提供类似 XHTML 的内容,浏览器将将其读取为 HTML,您将需要 DOCTYPE 来使用标准模式。

如何查看使用了哪种模式?

如果页面以怪癖模式或有限怪癖模式呈现,Firefox 将在开发者工具的控制台选项卡中记录一条警告。如果没有显示此警告,则 Firefox 正在使用无怪癖模式。

JavaScript 中 document.compatMode 的值将显示文档是否处于怪癖模式。如果其值为 "BackCompat",则文档处于怪癖模式。如果不是,则其值为 "CSS1Compat"