什么是DOCTYPE...的含义?

3

可能是重复问题:
Doctype 是什么?

在 Netbeans IDE 中创建新文件时,我在文件开头得到了 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

我将其删除后我的 html 仍然可以正常工作。我想知道这是什么以及是否必要?

谢谢。


请看这个问题:https://dev59.com/anRC5IYBdhLWcg3wFNDX - Mark
请查看这个问题:https://dev59.com/anRC5IYBdhLWcg3wFNDX - Marek Kwiendacz
6个回答

3
为了清楚起见: 除非我们关心验证,否则使用 doctype 的唯一原因是触发标准模式(请参见其他评论)。浏览器 不会 区分 HTML 的版本。这就是为什么建议选择尽可能简单的 doctype 的原因:
<!doctype html>

3
声明不是 HTML 标签,而是一种指示给浏览器的标记语言版本的指令。 声明是指向文档类型定义(DTD)的。DTD 指定了标记语言的规则,以便浏览器正确呈现内容。
请在此处查看: http://www.w3schools.com/tags/tag_doctype.asp

3
文档类型声明(DOCTYPE)是一种指令,它将特定的 SGML 或 XML 文档(例如网页)与文档类型定义(DTD)关联起来(例如,某个版本 HTML 的正式定义)。

http://en.wikipedia.org/wiki/Document_Type_Declaration

此外,根据W3C的说法:

HTML并不只有一种类型,实际上有很多种:HTML 4.01严格型、HTML 4.01过渡型、XHTML 1.0严格型等等。所有这些类型的HTML都在相应的W3C规范中定义,同时也以一种可机读的语言来定义HTML的合法结构、元素和属性。

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


3

我认为如果您不指定文档类型,浏览器会添加默认的文档类型,因此它可以正常工作。添加该行代码将覆盖默认设置,指定您需要使用特定的 markup 语言。


3
有许多不同名称的HTML变体,如XHTML,DHTML等...您的浏览器将尽力确定您的文档是使用哪种变体编写的,但可能并不总是正确。特别是在IE中,如果您没有声明doctype,它将默认为“怪异模式”,这经常导致大部分布局出现问题。
声明doctype意味着浏览器不必做出最佳猜测,而是根据您声明的doctype相关规范呈现您的页面。
以下是一些有关DTD之间差异的有趣文章:

它将在所有浏览器中默认为怪异模式。DHTML不是HTML的变体。 - duri
@duri 是的...我发帖后才想起DHTML,但懒得删了。如果所有浏览器都默认使用quirks模式,那么IE的quirks模式就比其他浏览器更糟糕,但问题仍然存在:只有在没有doctype时,IE才是唯一一个会导致布局崩溃的浏览器。 - Endophage

0
告诉浏览器你正在编写的HTML或XHTML的版本,以便它能够正确地处理它。

没有,页面也能正常工作,但浏览器不会知道它到底是哪个版本的文档。


doctype 不仅仅是关于 HTML 的。还有很多文档类型...例如 <!DOCTYPE svg>。 - Fedor Skrynnikov
是的,你说得对,还有 XML 和其他的。 :) 我只是试图回答一个简单的问题。 - ramono

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