可能重复:
什么';好了,Doctype?
当在Netbeans IDE中创建一个新文件时,我在文件的开头得到<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
。
我删除了它,我的html仍然有效。我想知道那是什么,有必要吗?
谢谢。
doctype声明不是HTML标记;这是一条给网络浏览器的关于页面是用什么版本的标记语言编写的指令。
doctype声明引用了文档类型定义(DTD(。DTD指定标记语言的规则,以便浏览器正确地呈现内容。
看看这里:http://www.w3schools.com/tags/tag_doctype.asp
文档类型声明或DOCTYPE是一种将特定SGML或XML文档(例如,网页(与文档类型定义(DTD((例如,特定版本HTML的正式定义(相关联的指令。
http://en.wikipedia.org/wiki/Document_Type_Declaration
此外,来自W3C:
HTML不仅仅有一种类型,实际上还有很多:HTML 4.01 Strict、HTML 4.01 Transitional、XHTML 1.0 Strict等等。所有这些类型的HTML都在各自的W3C规范中定义,但它们也在机器可读语言中定义,指定了一种类型HTML的法律结构、元素和属性。
http://www.w3.org/QA/Tips/Doctype
我相信,如果不指定doctype,浏览器会添加一个默认的doctype,这就是它工作的原因。添加该行将覆盖默认值,以指定您需要该特定标记语言。
HTML有许多变体,名称各异;XHTML、DHTML等。你的浏览器会尽最大努力找出你的文档是用哪种变体编写的,但可能并不总是正确的。特别是在IE中,如果你不声明doctype,它将默认为"怪癖模式",这通常会导致你的大部分布局中断。
声明doctype意味着浏览器不必进行最佳猜测,而是根据与您声明的doctype相关的规范来呈现您的页面。
以下是一些有趣的文章,介绍一些DTD之间的差异:
- 严格与过渡
- HTML与XHTML
明确一点:除非我们关心验证,否则使用doctype的唯一原因是触发标准模式(请参阅其他注释(。浏览器不会区分HTML的不同版本。这就是为什么建议选择尽可能简单的doctype:
<!doctype html>
Doctype告诉浏览器您编写的是哪种版本的HTML或XHTML,因此它可以按预期处理
没有Doctype,它可以工作,但浏览器不知道它的确切版本。