我有点好奇,
我有一个链接,它显示了以下声明的不同行为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
与声明链接:
没有声明的链接:
为什么我们需要声明并且声明是否会影响样式?
答案 0 :(得分:2)
为什么我们需要声明和
历史?它为验证器提供了一种方法,可以了解允许哪些元素和属性以及解析器扩展实体引用的位置。
HTML 5放弃了这个想法,并且有一个更简单的Doctype,除触发标准模式外什么都不做(见下文)。
声明会影响风格吗?
浏览器供应商,因为他们走出了“有很多和很多错误”的时代,决定使用Doctype作为启发式来确定页面的作者是否知道他们在做什么。
没有Doctype,他们认为作者不知道他们在做什么,并模仿很多古老的错误。这会在不同浏览器呈现给定页面的方式上产生很多不一致。这称为Quirks模式。
使用Doctype(某些Doctypes除外),他们会确定作者 知道他们在做什么,并尝试尽可能地接近标准所说的页面。这是标准模式。
答案 1 :(得分:1)
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(超文本标记语言)验证程序来检查页面编码。
浏览网页的浏览器将以“怪癖”模式处理编码。
样式表可能未按计划实施。
答案 2 :(得分:0)
为什么?
为什么要指定doctype?因为它定义了文档实际使用的(X)HTML版本,这是处理文档的某些工具所需的关键信息。
例如,指定文档的doctype允许您使用标记验证器等工具来检查(X)HTML的语法。如果这些工具不知道您正在使用何种文档,则无法使用这些工具。
但最重要的是,对于大多数浏览器系列而言,doctype声明会使大量猜测变得不必要,从而触发“标准”渲染模式。