# DOCTYPE
DOCTYPE 是 document type (文档类型)的简写,在 web 设计中用来说明使用的 XHTML 或者 HTML 是什么版本。
HTML5 不基于 SGML,所以不需要引用 DTD。
<!DOCTYPE html> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。
DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
其中的 DTD 叫文档类型定义,里面包含了文档的规则,浏览器就根据定义的 DTD 来解释你页面的标识,并展现出来。
要建立符合标准的网页,DOCTYPE 声明是必不可少的关键组成部分;除非你的 XHTML 确定了一个正确的DOCTYPE,否则标识和 CSS 都不会生效。
# XHTML 1.0 提供了三种DTD声明可供选择
- 过渡的
Transitional:要求非常宽松的DTD,它允许继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- 严格的
Strict:要求严格的DTD,不能使用任何表现层的标识和属性,例如<br>,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- 框架的
Frameset:专门针对框架页面设计使用的DTD,如果页面中包含有框架,需要采用这种DTD,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
# 相关面试题
DOCTYPE的作用?
DOCTYPE 是 HTML5 中一种标准通用标记语言的文档类型声明,它的目的是告诉浏览器(解析器)应该以什么样(html 或 xhtml )的文档类型定义来解析文档,不同的渲染模式会影响浏览器对 CSS 代码甚⾄ JavaScript 脚本的解析。它必须声明在 HTML ⽂档的第⼀⾏。
浏览器渲染页面的两种模式(可通过 document.compatMode 获取,比如,掘金的文档类型是 CSS1Compat):
CSS1Compat:标准模式(Strick mode),默认模式,浏览器使用 W3C 的标准解析渲染页面。在标准模式中,浏览器以其支持的最高标准呈现页面。
BackCompat:怪异模式(混杂模式)(Quick mode),浏览器使用自己的怪异模式解析渲染页面。在怪异模式中,页面以一种比较宽松的向后兼容的方式显示。