1

如果我们不包括 doctype 并且澄清<!DOCTYPE html>对于所有新旧浏览器都可以,我们将面临什么样的问题?

不包括有什么问题<!DOCTYPE html>

我已经阅读了 Stack Overflow 问题,DOCTYPE 怎么了?,但它没有发现问题。我想知道一些问题,有时答案提供者说你应该定义<!DOCTYPE html>另一种类型的问题,然后解决之后面临的问题,就像我想知道各种问题一样。

4

1 回答 1

6

最佳答案来自MDN

在 Web 的旧时代,页面通常以两种版本编写:一种用于 Netscape Navigator,另一种用于 Microsoft Internet Explorer。当 W3C 制定 Web 标准时,浏览器不能只是开始使用它们,因为这样做会破坏 Web 上大多数现有的站点。因此,浏览器引入了两种模式,以区别对待旧的旧站点来处理符合标准的新站点。

Web 浏览器中的布局引擎现在使用三种模式: 怪癖模式、几乎标准模式完全标准模式。在 quirks 模式下,布局模拟 Navigator 4 和 Internet Explorer 5 for Windows 中的非标准行为,要求不破坏 Web 上的现有内容。在完全标准模式下,行为(希望)是 HTML 和 CSS 规范所描述的行为。在几乎标准模式下,只实现了极少数的怪癖。

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

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

<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8>
<title>Hello World!</title>   
</head>
<body>
</body> 
</html>

示例中显示的 DOCTYPE 是最简单的,也是 HTML5 推荐的一种。早期版本的 HTML 标准推荐了其他变体,但今天所有现有的浏览器都将为此 DOCTYPE 使用完全标准模式,即使是过时的 Internet Explorer 6。没有正当理由使用更复杂的 DOCTYPE。如果您确实使用了另一个 DOCTYPE,您可能会冒险选择一个,这会触发几乎标准模式或怪癖模式。

确保将 DOCTYPE 放在 HTML 文档的开头。DOCTYPE 之前的任何内容,例如注释或 XML 声明,都会在 Internet Explorer 9 和更早版本中触发怪癖模式。

在 HTML5 中,DOCTYPE 的唯一目的是激活完全标准模式。旧版本的 HTML 标准为 DOCTYPE 赋予了额外的含义,但除了在怪癖模式和标准模式之间切换之外,没有浏览器使用过 DOCTYPE。

要回答您的第二个问题,建议您使用 HTML5 文档类型: <!DOCTYPE html>它会在每个浏览器(包括 IE6)中触发标准模式。

于 2013-04-28T03:00:15.617 回答