<!doctype html> 是什么作用?

49
这个标签是做什么用的? 我注意到,在HTML文档顶部添加了这个标签后,HTML的表现方式与没有添加时不同。
如何知道我是否需要使用此标签?
6个回答

122

它是HTML规范中的一个必要部分,详见规范文档

8.1.1 DOCTYPE(文档类型声明)

DOCTYPE是必需的前导声明。

由于历史原因,需要使用DOCTYPE。当省略时,浏览器往往使用不兼容某些规范的不同渲染模式。在文档中包含DOCTYPE确保浏览器尽力遵循相关规范。


编辑以添加:

这个安全带有什么用?

Seatbelt image

我能看到的是,戴着这个安全带,我的车辆行驶方式与没有戴时相同。那么我怎样知道是否需要这个安全带呢?

你只有在发生意外而没有戴上它时才会知道你需要它。


1
谢谢你的回答。使用标签改变了我的布局。我想知道为什么。 - Niklas Rosencrantz
1
@NiklasR,我以为你说它不会改变布局。我一定读错了你的问题。使用文档类型告诉浏览器需要按照规范渲染,而不是怪异模式。 - zzzzBov
8
我喜欢你举的安全带的例子... :) - Ankur Loriya
4
喜欢安全带的例子!经典! - Fraggy
4
座椅安全带的例子很棒 :) - Aditya Singh
显示剩余5条评论

22
DOCTYPE Declaration is the abbreviation for Document Type Declaration (DTD).

文档类型声明(DTD或文档类型声明)有以下作用:

  1. 在对网页进行HTML验证测试时,它告诉HTML(超文本标记语言)验证器,网页编码应符合哪个版本的(X)HTML标准。当您验证网页时,HTML验证器会检查编码是否符合适用的标准,然后报告哪些部分的编码未通过HTML验证(不兼容)。

  2. 它告诉浏览器以标准兼容模式呈现页面。

如果网页编码不包括DOCTYPE声明(DTD或文档类型声明),或者它错误地完成:

  1. 您将无法使用HTML(超文本标记语言)验证器检查页面编码。 HTML验证需要DOCTYPE声明。

  2. 渲染网页的浏览器将以怪异模式处理编码。

  3. 样式表可能无法按计划实现。

您应该使用哪个DOCTYPE?

如果您是HTML(超文本标记语言)的初学者,我建议您使用HTML 4.01 Transitional声明。它对初学者更加宽容,当执行HTML验证时更容易通过。如果您知道您的受众没有支持CSS(层叠样式表)的浏览器,也可以使用此声明。

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

这个DOCTYPE声明仍然允许应该在样式表中的元素和表示属性。


如果你想为未来学习编码,但还没有准备好使用XHTML,那么你可以使用Strict声明。

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

通过这个声明,所有的展示属性都被移动到样式表中。

有效DTD列表中可以找到完整的DOCTYPE声明列表。


5

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

doctype声明不是一个HTML标签;它是对浏览器的指示,告诉它页面所使用的标记语言版本。

doctype声明引用了文档类型定义(DTD)。DTD指定了标记语言的规则,以便浏览器正确地呈现内容。

引自这里:http://www.w3schools.com/tags/tag_doctype.asp

:)


1
基本上,它只是告诉浏览器如何呈现您的文档。您应该始终在html文档顶部使用此标签。 - RylandAlmanza
3
引用w3schools的结果是-0.49。如果你能找到一个不被认为充满废话的参考资料就更好了。 - cHao
谢谢您的回答。问题是,如果使用它,它会在表格单元格之间产生一个空格。 - Niklas Rosencrantz
1
@NiklasR - 如果你的问题是表格单元格之间的空格,你可能想阅读这篇文章:图片、表格和神秘的间隙 - Alohci

3
一个文档类型声明会在您的浏览器中启用标准模式,因此应始终使用它。应始终避免怪异模式。

2

浏览器之战和两种模式

为了理解 DOCTYPE 的重要性,让我们从浏览器之战的时代开始回顾一些历史。在那个时候,网页被写成两个不同的版本,以支持 Internet ExplorerNetscape Navigator 两种浏览器。

但后来,W3C 接管了 Web 标准的定义。但不幸的是,拥有新标准的浏览器无法呈现为旧版浏览器构建的网页。因此,为了支持为旧版浏览器构建的网站,引入了 怪异模式。在此模式下,浏览器假定您编写了老式、无效的标记和代码,符合上世纪90年代令人沮丧的行业规范。

为了区分这些网站与新网站,添加了 DOCTYPE,它向浏览器发出信号,表明应在 标准模式 下呈现此网页。

HTML5 和 HTML 4.01

在 HTML5 之前,HTML 是基于 SGML 的,需要一个 文档类型定义(DTD)来建立标记的规则和语法。因此,doctype 还包含有关文档类型定义(DTD)的其他信息。

然而,随着 HTML5 的推出,DOCTYPE 是唯一需要启用标准模式的东西。


0
简单来说:<!DOCTYPE HTML> 表示这段代码是HTML。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接