为什么我需要一个文档types? (它是做什么的)

可能重复:
HTML:!DOCTYPE的function是什么?

我最近在这里问了一个问题,解决scheme很简单:

你需要添加一个doctype到页面。 这应该解决你的问题。

现在,我的网页在没有文档types(IE除外)的每个浏览器中都能正常工作。 IE需要一个文档types(这是一个只有IE浏览器的东西),其他浏览器只是假设它或正在做的事情,我没有看到。

它的function是什么,它是如何工作的?

所有浏览器都需要文档types。 如果没有DOCTYPE你会迫使浏览器以怪癖模式呈现。

但是, DOCTYPE只是被浏览器部分用来确定方言和parsing ,尽pipe这是目的。 这就是为什么HTML5已经将DOCTYPE简化为 :

<!DOCTYPE html>

2.2。 DOCTYPE

HTML5的HTML语法需要指定DOCTYPE以确保浏览器以标准模式呈现页面。 DOCTYPE没有其他用途,因此对于XML是可选的。 具有XML媒体types的文档始终在标准模式下处理。 [DOCTYPE]

DOCTYPE声明是<!DOCTYPE html> ,在HTML语法中不区分大小写。 早期版本的HTML中的DOCTYPE较长,因为HTML语言是基于SGML的,因此需要对DTD进行引用。 对于HTML5,情况已不再是这种情况,只需要使用HTML语法为文档启用标准模式即可使用DOCTYPE。 浏览器已经为<!DOCTYPE html>做了这个。

来源: 与HTML4:DOCTYPE的HTML5差异

Doctype做了两件事。

  1. 它确定了您正在使用哪种HTML方言。
  2. 它控制浏览器是使用“标准”还是“怪癖”模式来呈现文档。

如果没有文档types,或者有一个无法识别的文档,那么它会使用“怪癖”模式并尽可能地解释文档。 如果有一个文档types,并且它能够识别它,那么它就遵循标准。 渲染的结果可能会有所不同,具体取决于它如何解释文档。

为什么?

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

例如,指定文档的文档types允许您使用诸如标记validation程序之类的工具来检查(X)HTML的语法。 如果他们不知道您使用的是什么types的文档,这些工具将无法工作。

但最重要的是,对于大多数浏览器系列来说,文档types声明将会使大量猜测变得不必要,从而触发“标准”呈现模式。

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

你应该有一个DOCTYPE为任何浏览器。 它告诉浏览器如何解释html和css。 这就是为什么html4和html5有不同的定义(和xhtml一样)。 对validation非常重要。

IE将会把这个文档放到它所谓的“怪癖模式”中,这个模式基本上忽略了CSS(现代定义)应该如何运作的一整套规则。 这是一个很好的总结 。 它回到了非标准化的CSS支持的坏日子

浏览器至less需要以所谓的标准模式进行渲染。 请参阅John Resig关于html 5 doctype的文章: http : //ejohn.org/blog/html5-doctype/ 。 现在,如果你想让你的浏览器不使用标准,并像1990年那样渲染,不要添加任何东西,你会看到浮动和其他现在标准的项目不能正常工作。 如果你想让你的页面根据特定的标准进行渲染/validation,那么你会想要添加更多的文档types,但没有必要。

doctype声明应该是HTML文档中标签之前的第一件事。

doctype声明不是HTML标记; 它是网页浏览器关于写入页面的标记语言版本的指令。

文档types声明是指文档types定义(DTD)。 DTD指定标记语言的规则,以便浏览器正确地呈现内容。

参考

从W3Schools来说,文档types是“向网页浏览器发出有关该网页所使用的标记语言版本的指令”。 (http://www.w3schools.com/tags/tag_doctype.asp);

如果您不包含文档types,浏览器可能会认为您使用的语言与您的语言不同,导致其显示不正确。

来自W3Schools.com :

doctype声明不是HTML标记; 它是网页浏览器关于写入页面的标记语言版本的指令。

有几个不同的文档types,改变他们可以彻底改变你的网页呈现方式。