[HTML doctype declaration]:为什么我们需要声明并且声明是否影响样式?

时间:2013-04-21 15:15:15

标签: html css web w3c

我有点好奇,

我有一个链接,它显示了以下声明的不同行为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

与声明链接:

link with html dclaration

没有声明的链接:

link without html declaration

为什么我们需要声明并且声明是否会影响样式?

3 个答案:

答案 0 :(得分:2)

  

为什么我们需要声明和

历史?它为验证器提供了一种方法,可以了解允许哪些元素和属性以及解析器扩展实体引用的位置。

HTML 5放弃了这个想法,并且有一个更简单的Doctype,除触发标准模式外什么都不做(见下文)。

  

声明会影响风格吗?

浏览器供应商,因为他们走出了“有很多和很多错误”的时代,决定使用Doctype作为启发式来确定页面的作者是否知道他们在做什么。

没有Doctype,他们认为作者不知道他们在做什么,并模仿很多古老的错误。这会在不同浏览器呈现给定页面的方式上产生很多不一致。这称为Quirks模式。

使用Doctype(某些Doctypes除外),他们会确定作者 知道他们在做什么,并尝试尽可能地接近标准所说的页面。这是标准模式。

答案 1 :(得分:1)

规范中定义的

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声明的作用:

  1. 在网页上执行HTML验证测试时,它告诉HTML(超文本标记语言)验证器网页编码应符合哪个(X)HTML标准版本。当您验证网页时,HTML验证程序会根据适用的标准检查编码,然后报告编码的哪些部分未通过HTML验证(不符合要求)。

  2. 它告诉浏览器如何以符合标准的模式呈现页面。

  3. 如果不包括DOCTYPE:

    1. 您将无法使用HTML(超文本标记语言)验证程序来检查页面编码。

    2. 浏览网页的浏览器将以“怪癖”模式处理编码。

    3. 样式表可能未按计划实施。

答案 2 :(得分:0)

为什么?

为什么要指定doctype?因为它定义了文档实际使用的(X)HTML版本,这是处理文档的某些工具所需的关键信息。

例如,指定文档的doctype允许您使用标记验证器等工具来检查(X)HTML的语法。如果这些工具不知道您正在使用何种文档,则无法使用这些工具。

但最重要的是,对于大多数浏览器系列而言,doctype声明会使大量猜测变得不必要,从而触发“标准”渲染模式。

http://www.w3.org/QA/Tips/Doctype