什么是DOCTYPE?

  • 什么是DOCTYPE,为什么我要使用它?
  • 什么是不同的DOCTYPE我可以使用?
  • 标准和怪癖模式之间有什么区别,以及我可能遇到的不同设置的DOCTYPE有哪些怪癖?

最后,我应该使用什么样的DOCTYPE?

基本上,DOCTYPE描述了将在您的页面中使用的HTML。

浏览器还使用DOCTYPE来确定如何呈现页面。 不包括DOCTYPE或包含不正确的DOCTYPE可能会触发怪癖模式。 这里的踢脚板是,Internet Explorer中的怪癖模式与Firefox(以及其他浏览器)中的怪癖模式完全不同,这意味着如果页面呈现为怪癖,您将更难以确保您的网页在所有浏览器中始终如一地运行模式比如果它们在标准模式下呈现的模式。

在使用各种DOCTYPE时,维基百科对渲染差异有更深入的总结。 XHTML是由某些doctypes启用的,关于使用XHTML的XHTML(关于XHTML的使用- 神话与现实)有相当多的争议。

不同的“标准投诉”呈现文档types之间存在细微的差异,比如HTML5 doctype( <!DOCTYPE html> ,在HTML5之前只被称为“瘦型文档”,不会触发旧版浏览器中的标准化呈现)和其他DOCTYPE这一个为HTML 4.01过渡:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

DOCTYPE告诉消费用户代理(Web浏览器,Web爬虫,validation工具)文件是什么types的文件。 使用它可以确保用户正确地parsingHTML。

HTML,XHTML和Framesets有几种不同的DOCTYPES,每种都有Strict和Transitional两种模式。 严格的说,你的标记完全是使用已定义的标准。 有关更多详细信息,请参阅W3C DTD页面。

Quirksmode基本上是浏览器战争时代的标准不太受尊重和定义的布局方法。 一般而言,标准模式页面是有效的,将在各种浏览器中更一致地布置,但可能缺乏您需要的某些function。 一个这样的特征是锚标签的目标属性。 Quirksmode网站是这些差异的一个很好的资源。

最后一个想法是,新的HTML5标准build议使用一个非常简单的DOCTYPE:

<!DOCTYPE html>

使用这个DOCTYPE是一个向前兼容的方式来指定你的页面处于标准模式,并且是HTML。 这是Google使用的方法,并且相当容易记住。 我build议使用这个DOCTYPE,除非你打算使用XHTML。

文档types定义您的文档使用哪种版本的HTML / XHTML。 你会想使用一个文档types,所以当你通过validation器运行代码时,validation器知道要检查哪个版本的HTML / XHTML。 本页提供了一个很好的概述:

不要忘记添加一个文档types

这里列出了可以使用的常用文档types:

推荐的DTD列表

你应该使用哪种doctype取决于你正在使用的代码,但为了得到一个想法,请尝试通过W3Cvalidation器运行你的代码,并使用“更多选项”菜单中的文档types下拉菜单尝试不同的文档types。

W3C标记validation服务

在网页上使用的HTML(包括XHTML)中,DOCTYPE是一个string,它触发几种浏览器模式之一(奇怪模式,标准模式,几乎标准模式),具体取决于DOCTYPE的拼写。 你想用它来select一个最适合你的页面的浏览器模式。

forms上,在SGML和XML中,DOCTYPE声明是对文档types定义(DTD)的引用,它指定了标记语言的forms语法规则。 没有浏览器曾经使用DTD的任何东西,甚至访问它们。 但是,除了在HTML5模式中,它们被SGML和XML标记validation程序(如W3C标记validation程序)使用。 因此,DOCTYPE的select决定了如果文档被提交给validation器,validation器是如何工作的。 但是,validation器的操作模式也可以在其用户界面中select。 (SGML和XML处理器也可能以不同的方式使用DOCTYPE,但是这个问题显然只限于HTML上下文和Web浏览器以及密切相关的软件。

没有DOCTYPE的权威列表。 每个HTML规范或草案都定义了自己的DOCTYPE或DOCTYPE。 浏览器在select模式时识别的DOCTYPE集合因浏览器而异。 实际上,没有理由使用除HTML5中定义的 <DOCTYPE html>之外的<DOCTYPE html> ,尽pipeHTML5也列出了一些“旧DOCTYPE”。 如果您需要标准模式(build议用于新页面),则可以使用该DOCTYPE,如果要使用古怪模式(您可能需要传统页面),则不要使用DOCTYPE。

“标准模式”一般是指浏览器遵循HTML,CSS,DOM等规范的最佳操作模式。 这通常不意味着完全符合。 “怪癖模式”在不同的浏览器中是不同的,但通常意味着模仿IE 5这样的老式浏览器的行为。目的是保持旧页面的工作,假设他们可能依靠function和错误旧的浏览器。 查看描述怪癖模式下会发生什么? 请注意,在HTML5中有一个相当不同的,更有限的“怪癖模式”的概念,它与Quirks Mode Living Standard文档非常相似。

一个典型的问题是元素宽度在怪癖模式和标准模式下的计算方式不同。 这意味着,如果在标准模式下查看devise为以怪癖模式工作的页面(或反之亦然),页面的布局可能或多或less被改变,甚至完全搞砸了。

所以你应该使用<!DOCTYPE html>作为新的页面,并保留你曾经用于旧页面的DOCTYPE(如果有的话)。

但是,在某些浏览器中,怪异模式意味着不支持CSS的许多新特性。 这意味着如果你想用一些CSS3特性增强一个旧页面,可能需要切换到触发标准模式的DOCTYPE。 在这种情况下,您需要查看和testing页面,看它是否会以标准模式运行。

Doctypes告诉浏览器使用什么语言编写页面,无论是HTML还是XHTML。 例如,

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

告诉浏览器将页面呈现为HTML4 strict 。 较旧的浏览器用于错误地呈现页面,因此较新的浏览器在发现旧的文档types时模拟旧浏览器的错误。

今天你应该至less使用HTML4或更好的XHTML。

关于文档types的博客条目是使用正确的DOCTYPE修复您的网站! (来自A List Apart )。

首先,没有一个应该使用的文档types,但是大多数devise者试图在XHTML 1.0 Strict中使用它。

文档types只不过是声明你可以在你的html中使用什么标签(虽然浏览器可以使用多于或less于定义的内容)你可以打开doctype文件并开始阅读( XHTML 1.0 Strict )

如果你没有指定文档types,浏览器将尽力猜测,但不总是打正确的types。

怪癖模式只是浏览器向后兼容的一种技术,怪癖模式的一个很好的例子就是IE如何渲染盒子

在networking上,doctype什么也不做,只是告诉浏览者,如果你想要标准,几乎标准或怪癖模式。

怪异模式中的变化取决于浏览器:Firefox,Opera,Safari和Chrome实现了一组有限的怪癖,例如像<table><tr><td><img></td></tr></table> (解决scheme: td img { vertical-align:bottom; } )。 另一方面,IE在IE5.5中还原为渲染引擎。 这意味着您将无法使用自2000年以来实施的任何新function。

要触发标准模式,我build议使用HTML5文档types<doctype html> ,因为它是最容易记住的。

文档types是一个描述xhtml-like文档的内容如何看起来像一个网页(如网页)的文档。 注意:这只定义了所述页面的语法,页面的呈现不是由DTD定义的!

例如,doctype可以定义<table> -tag的外观样式,它接受哪个属性,以及每个属性接受哪个值/值types。 把它当作你当前网页的词典。

维基百科在常用的各种文档types上有一个信息页面。 注意你 – 没有什么能阻止你创build自己的文档types。 但是,有可能浏览器可能不知道如何呈现文档。

要使用哪个DTD取决于你要写什么。 例如,XHTML具有与HTML完全不同的DTD。