我有点好奇,
我有一个链接,它显示有和没有以下声明的不同行为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
与声明的链接:
没有声明的链接:
为什么我们需要声明,声明会影响风格吗?
为什么我们需要声明和
历史上?它为验证器提供了一种方法来了解哪些元素和属性被允许在何处以及解析器扩展实体引用。
HTML 5 放弃了这个想法,并有一个更简单的 Doctype,除了触发标准模式(见下文)之外什么都不做。
声明会影响风格吗?
浏览器供应商正走出“有很多很多错误”的时代,他们决定使用 Doctype 作为一种启发式方法来确定页面的作者是否知道他们在做什么。
由于没有 Doctype,他们认为作者不知道他们在做什么,并模仿了许多古老的错误。这会在不同浏览器呈现给定页面的方式上产生很多不一致。这称为怪癖模式。
使用 Doctype(某些 Doctype 除外),他们认为作者确实知道他们在做什么,并尝试尽可能接近标准所说的呈现页面。这是标准模式。
规范中定义的文档类型。
8.1.1 The DOCTYPE
A DOCTYPE is a required preamble.
DOCTYPEs are required for legacy reasons. When omitted, browsers tend
to use a different rendering mode that is incompatible with some
specifications. Including the DOCTYPE in a document ensures that the
browser makes a best-effort attempt at following the relevant specifications.
DOCTYPE 声明的作用:
在网页上执行 HTML 验证测试时,它会告诉 HTML(超文本标记语言)验证器网页编码应该符合哪个版本的 (X)HTML 标准。当您验证您的网页时,HTML 验证器会根据适用标准检查编码,然后报告编码的哪些部分未通过 HTML 验证(不合规)。
它告诉浏览器如何以标准兼容模式呈现页面。
如果不包括 DOCTYPE:
您将无法使用 HTML(超文本标记语言)验证器来检查页面编码。
呈现网页的浏览器将以“怪癖”模式处理编码。
样式表可能无法按计划实施。
为什么?
为什么要指定文档类型?因为它定义了您的文档实际使用的 (X)HTML 版本,这是处理文档的某些工具所需的关键信息。
例如,指定文档的 doctype 允许您使用诸如标记验证器之类的工具来检查 (X)HTML 的语法。如果这些工具不知道您使用的是哪种文档,它们将无法工作。
但最重要的是,对于大多数浏览器系列来说,一个 doctype 声明会使很多猜测变得不必要,从而触发“标准”渲染模式。