为什么我需要文档类型?(它有什么作用)[复制]

Why do I need a doctype? (What does it do) [duplicate]

提问人:Freesnöw 提问时间:5/21/2011 最后编辑:CommunityFreesnöw 更新时间:5/21/2011 访问量:93266

问:

这个问题在这里已经有答案了:
12年前关闭。

可能的重复项: HTML:
的功能是什么!文档类型

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

您需要向页面添加文档类型。这应该可以为您解决问题。

现在,我的页面可以在没有文档类型的每个浏览器中正常工作(IE 除外)。IE 是否需要 doctype(这是 IE 独有的东西)并且其他浏览器只是假设它它是否在做一些我没有看到的事情。

它的功能是什么,它是如何工作的?

HTML 文档类型

评论


答:

1赞 breezy 5/21/2011 #1

doctype 声明应为 HTML 文档中的第一件事, 在标记之前。

doctype 声明不是 HTML 标记;这是对网络的指令 浏览器关于什么版本的 页面编写的标记语言 在。

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

参考

17赞 Will Martin 5/21/2011 #2

Doctype 做两件事。

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

如果没有文档类型,或者存在无法识别的文档类型,则它使用“怪癖”模式并尽可能地解释文档。如果存在一个文档类型,并且它识别它,那么它遵循标准。呈现的结果可能因文档的解释方式而异。

7赞 onteria_ 5/21/2011 #3

为什么?

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

例如,指定 您的文档允许您使用工具 例如标记验证器来检查 (X)HTML 的语法。此类工具 如果他们不这样做,将无法工作 知道你是什么样的文件 用。

但最重要的是 对于大多数浏览器系列,一个 doctype 声明会做很多 猜测是不必要的,因此会 触发“标准”渲染模式。

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

评论

3赞 Kevin Peno 5/21/2011
在这一点上,我不认为最后编辑于 2009 年、最初创建于 2002 年的页面是可靠的参考。
2赞 Raynos 5/21/2011
@KevinPeno我想你不知道W3是谁。
1赞 Kevin Peno 5/21/2011
@Raynos,你在说什么?哈哈?我的观点是,它比 doctype 上的 HTML5 更改早 2 年。因此,它并不真正可靠,因为它没有引用讨论。他们在该网站上有很多页面已经过时了。
1赞 onteria_ 5/21/2011
@KevinPeno 您希望改变对 DOCTYPE 的需求吗?
1赞 Kevin Peno 5/21/2011
@Raynos,其存在只是为了向后兼容。所以是的,我是这么说的,当规范被取代时。DOCTYPE
67赞 Kevin Peno 5/21/2011 #4

所有浏览器都需要 doctype。如果没有,您将强制浏览器以 Quirks 模式呈现。DOCTYPE

然而,浏览器只部分地用于确定方言和解析,即使这是目的。这就是为什么 HTML5 将 DOCTYPE 简化为:DOCTYPE

<!DOCTYPE html>

2.2. DOCTYPE

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

DOCTYPE 声明在 HTML 语法中不区分大小写。早期版本的 HTML 中的 DOCTYPE 更长,因为 HTML 语言是基于 SGML 的,因此需要对 DTD 的引用。在 HTML5 中,情况不再如此,只需要 DOCTYPE 来为使用 HTML 语法编写的文档启用标准模式。浏览器已经为 .<!DOCTYPE html><!DOCTYPE html>

来源HTML5 与 HTML4 的区别:DOCTYPE

评论

4赞 Kevin Ji 5/21/2011
实际上,它确实决定了文档是呈现为严格模式、几乎严格模式还是怪癖模式,因此它确实有其目的。
3赞 Kevin Ji 5/21/2011
请参阅下表: hsivonen.iki.fi/doctype 它对以前版本的 (X)HTML 产生了明显的影响
4赞 Stuart Burrows 5/21/2011 #5

您应该具有任何浏览器的 DOCTYPE。它告诉浏览器如何解释 html 和 css。这就是为什么 html4 和 html5 有不同的定义(xhtml 也是如此)。这些对于验证都非常重要。

IE将要做的是将文档放入所谓的“怪癖模式”中,该模式基本上忽略了CSS应该如何(根据现代定义)行为的一大堆规则。这是对这个问题的一个很好的总结。它让人回想起过去对非标准化CSS支持的糟糕时光

评论

0赞 aName 5/16/2018
你说的“解释”是什么意思??,它是大小、颜色、元素、标签......等??
2赞 George Cummins 5/21/2011 #6

在 W3Schools 中,文档类型是“向 Web 浏览器发出的关于页面使用哪个版本的标记语言编写的指令”。(http://www.w3schools.com/tags/tag_doctype.asp)

如果不包含 doctype,浏览器可能会认为您使用的语言与实际语言不同,从而导致其呈现不正确。

4赞 scrappedcola 5/21/2011 #7

浏览器至少需要以所谓的标准模式进行渲染。参见 John Resig 关于 html 5 文档类型的文章:http://ejohn.org/blog/html5-doctype/。现在,如果您希望您的浏览器不使用标准并像 1990 年那样渲染,请继续不添加任何内容,您会看到浮点数和其他现在的标准项无法正常工作。如果你想让你的页面按照特定的标准呈现/验证,那么你会想在文档类型中添加更多,但这不是必需的。

2赞 Ken Pespisa 5/21/2011 #8

来自W3Schools.com

doctype 声明不是 HTML 标记;这是对网络的指令 浏览器关于什么版本的 页面编写的标记语言 在。

有几种不同的文档类型,更改它们可以极大地改变页面的呈现方式。