HTML – <!DOCTYPE> 文档类型声明

前面介绍了《HTML <!–…–> 注释标签》,今天要介绍的是 <!DOCTYPE> 文档类型声明

DOCTYPE 简介

DOCTYPE 声明是文档类型声明(Document Type Declaration – 以下都使用 DTD)的缩写。<!DOCTYPE> 声明不是 HTML 标签,它是指示 Web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。

<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。

<!DOCTYPE html>
<html lang="zh-CN" prefix="og: http://ogp.me/ns#">
...
</html>

<!DOCTYPE> 声明没有结束标签,<!DOCTYPE> 声明对大小写也不敏感。<!DOCTYPE><!doctype> 效果是一样的。

DTD 的作用

DTD 主要做了两件事情:

  1. 当在网页上执行 HTML 验证测试时,它告诉 HTML 验证程序验证网页编码应该符合的 HTML 标准版本。当您验证您的网页时,HTML 验证程序将根据适用的标准检查编码,然后报告编码的哪些部分不通过 HTML 验证(不符合)。
  2. DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。

DTD 的版本

要知道 HTML 标准发展到现在已经有很多版本了:

  • HTML 1.0 — 1993年6月发布,IETF 发布
  • HTML 2.0 — 1995年11月发布,RFC 发布
  • HTML 3.2 — 1996年1月发布,W3C 推荐标准
  • HTML 4.0 — 1997年12月发布,W3C 推荐标准
  • HTML 4.01 — 1999年12月发布,W3C 推荐标准
  • XHTML 1.0 — 2000年1月26日发布,W3C 推荐标准,后来经过修订于2002年8月1日重新发布
  • XHTML 1.1 — 2001年5月31日发布,W3C推荐标准
  • HTML 5.0 — 2014年10月28日发布,W3C 推荐标准

不同的 HTML 标准有不同的 DTD,甚至同一个 HTML 标准也会有几种不同的 DTD。本文主要介绍 XHTML1.1 标准和 HTML5 标准的 DTD(目前被广泛使用的应该就是 XHTML 和 HTML5 标准了)。

XHTML1.1 标准的 DTD

XHTML1.1 标准有: Strict、Transitional、Frameset 3 种不同的 DTD:

1. 过渡的(Transitional):要求非常宽松的 DTD,它允许你继续使用 HTML4.01 的标识(但是要符合 XHTML 的写法)。

<!DOCTYPE html PUBLIC"_//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/ahtml1-transitional.dtd">

2. 严格的(Strict):要求严格的 DTD,你不能使用任何表现层的标识和属性。

<!DOCTYPE html PUBLIC"_//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/ahtml1-strict.dtd">

3. 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。

<!DOCTYPE html PUBLIC"_//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/ahtml1-frameset.dtd">

HTML5 的 DTD

HTML5 的 DTD 就只有一种,而且声明也非常的简单:

<!DOCTYPE html>

如果有兴趣了解更详细的 DTD,请参考《Recommended list of Doctype declarations》一文。

如何选择 DTD?

目前来说,不管是新手还是从事前端开发多年的开发者,几乎都选择使用 HTML5 的 DTD,所以我也推荐使用 HTML5 的 DTD。HTML5 的 DTD 是兼容 XHTML 的,只是 HTML5 中已经淘汰了 <frameset><frame> 标签。如果你确实需要使用框架页,就只能选择 XHTML 的 Frameset 的 DTD 了。

不使用 DTD 会怎么样?

不使用 DTD 的结果肯定是你希望的:

  • 无法使用 HTML 验证程序来检查页面编码,HTML 验证需要 DOCTYPE 声明;
  • 浏览器就会采用一种叫怪癖模式(Quirks mode)的方式解析 HTML 文档;
  • CSS 样式表可能没有按计划来呈现效果;

浏览器采用怪癖模式解析 HTML 后,会刻意模仿旧浏览器中的许多错误,尤其是 IE 4 和 IE 5。从而导致 CSS 样式表可能没有按计划来呈现效果。具体的表现和影响可以参考下面的文章:

<!DOCTYPE> 声明对于 HTML 文档是多么的重要相信通过上面的介绍大家一定有了一个清晰的认识。所以,请一定记得在 HTML 文档的第一行就添加上 <!DOCTYPE> 声明。

SHARE THIS PAGE

免责声明:本站文章中的观点都是作者个人观点,并没有以任何方式反映他所属机构的意见。

发表评论