什么是DOCTYPE?

时间:2009-01-05 23:21:54

标签: html xhtml doctype dtd

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

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

9 个答案:

答案 0 :(得分:73)

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

浏览器还使用DOCTYPE来确定如何呈现页面。不包括DOCTYPE或包含不正确的DOCTYPE可以触发怪癖模式。这里的问题是,Internet Explorer中的怪癖模式与Firefox(和其他浏览器)中的怪癖模式完全不同,这意味着您将有一个很多更难的工作,试图确保您的页面始终如一地工作浏览器是否以怪异模式呈现页面,而不是以标准模式呈现页面。

维基百科对differences in rendering when using various DOCTYPEs有更深入的总结。 XHTML由某些文档类型启用,关于XHTML的使用存在相当多的争论,XHTML — myths and reality已经很好地讨论了它。

不同的“标准投诉”呈现文档类型之间存在细微差别,例如HTML5文档类型(<!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">

答案 1 :(得分:26)

DOCTYPE告诉消费用户代理(Web浏览器,网络抓取工具,验证工具)文件的类型。使用它可以确保消费者正确地按照您的意图解析HTML。

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

Quirksmode基本上是浏览器大战中的布局方法,当时标准不太受尊重和定义。通常,标准模式页面有效,将在各种浏览器中更一致地布局,但可能缺少您需要的某些功能。一个这样的特征是锚标记的目标属性。 Quirksmode网站是解决这些差异的绝佳资源。

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

  

<!DOCTYPE html>

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

答案 2 :(得分:6)

doctype定义文档使用的HTML / XHTML版本。您可能希望使用doctype,以便在通过验证程序运行代码时,验证程序知道要检查的HTML / XHTML版本。此页面提供了一个很好的概述:

Don't forget to add a doctype

此处列出了您可以使用的常见文档类型:

Recommended list of DTDs

您应该使用哪种doctype取决于您使用的代码,但要想一想,请尝试通过W3C验证程序运行代码并使用文档类型下拉菜单“更多选项”菜单可以尝试不同的文档类型。

W3C Markup Validation Service

答案 3 :(得分:3)

在网页上使用的HTML(包括XHTML)中,DOCTYPE是一个字符串,它触发一些浏览器模式(怪癖模式,标准模式,几乎标准模式),具体取决于DOCTYPE的确切拼写。您希望使用它来选择最适合您页面的浏览器模式。

正式地,在SGML和XML中,DOCTYPE声明是对文档类型定义(DTD)的引用,它指定了标记语言的正式语法规则。没有浏览器曾经使用DTD进行任何操作甚至访问过它们。但是,它们由SGML和XML标记验证程序(如W3C Markup Validator)使用,但HTML5模式除外。因此,DOCTYPE的选择决定了如果提交文档,验证器的工作方式。但是,也可以在其用户界面中选择验证器操作模式。 (SGML和XML处理器也可以以不同的其他方式使用DOCTYPE,但问题显然仅限于HTML上下文以及Web浏览器和密切相关的软件。)

没有DOCTYPE的权威列表。每个HTML规范或草案都定义了自己的DOCTYPE或DOCTYPE。浏览器在选择模式时识别的DOCTYPE集因浏览器而异。实际上,没有理由使用<DOCTYPE html> as defined in HTML5以外的DOCTYPE,尽管HTML5还列出了一些“遗留DOCTYPE”。如果您需要标准模式(推荐用于新页面),则可以使用该DOCTYPE;如果需要quirks模式(旧版页面可能需要),则可以不使用DOCTYPE。

“标准模式”通常指的是操作模式,其中浏览器尽可能地遵循HTML,CSS,DOM和其他规范。它通常不代表完全一致。 “Quirks模式”在不同的浏览器中有所不同,但通常它意味着尝试模仿像IE 5这样的非常老的浏览器的行为。目的是保持旧页面工作,假设它们可能依赖于功能和错误。旧浏览器。请参阅说明What happens in Quirks Mode?请注意,HTML5中存在一个相当不同的,更有限的“怪癖模式”概念,它与名为Quirks Mode Living Standard的文档非常相似。

典型问题是在奇怪模式和标准模式下元素宽度的计算方式不同。这意味着如果在标准模式下查看设计为以怪异模式工作的页面(反之亦然),页面布局可能会或多或少地发生变化甚至完全混乱。

因此,您应该将<!DOCTYPE html>用于新页面并保留您用于旧页面的任何DOCTYPE(如果有)。

但是,在某些浏览器中,怪癖模式意味着不支持CSS的许多新功能。这意味着如果要增强具有某些CSS3功能的旧页面,可能需要切换到触发标准模式的DOCTYPE。在这种情况下,您需要检查并测试页面,看它是否会以标准模式运行。

答案 4 :(得分:2)

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

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

告诉浏览器将页面呈现为HTML4 strict。较旧的浏览器用于错误地呈现页面,因此较新的浏览器会在找到旧的doctype时模拟旧浏览器的错误。

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

关于doctypes的博客条目是 Fix Your Site With the Right DOCTYPE! (来自A List Apart)。

答案 5 :(得分:1)

首先,你应该使用没有一个doctype,但是大多数设计师都试图让它在XHTML 1.0 Strict中运行。

doctype只不过是你可以在html中使用什么标签的声明(虽然浏览器可以使用多于或少于定义的内容)你可以实际打开doctype文件并开始阅读({{3} })

如果您没有指定doctype,浏览器会尽力猜测,但并不总是点击正确的类型。

Quirks模式只是浏览器向后兼容的一种技术,怪癖模式的一个很好的例子是XHTML 1.0 Strict

答案 6 :(得分:1)

在网络上,doctype什么都不做,只是告诉浏览器你是否需要标准,几乎标准或怪癖模式。

怪癖模式的哪些变化取决于浏览器:Firefox,Opera,Safari和Chrome实现了一组有限的怪癖,例如在<table><tr><td><img></td></tr></table>等代码中删除文本下延的空间(解决方案:td img { vertical-align:bottom; } })。另一方面,IE恢复到IE5.5中的渲染引擎。这意味着您将无法使用自2000年以来实施的任何新功能。

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

答案 7 :(得分:0)

doctype是一个文档,描述了类似xhtml的文档的内容(如网页)。 注意:这只定义了所述页面的语法,页面的呈现不是由DTD定义的!

例如,doctype可以定义<table> - 标记的外观 - 它接受哪些属性,以及每个属性接受哪些值/值类型。将其视为当前网页的词汇。

Wikipedia有一个关于常用的各种Doctypes的信息页面。请注意 - 没有什么可以阻止您创建自己的doctype。但是,浏览器可能不知道如何呈现文档。

使用哪种DTD取决于您要编写的内容。例如,XHTML具有与HTML完全不同的DTD。

答案 8 :(得分:0)

DOCTYPE告诉浏览器您要编写哪种类型的文档。每个DOCTYPE都有很小的区别,例如不同的标签,更严格的规则等。
您可以看到所有的DOCTYPE here