简单来说就是告诉我们的浏览器采用什么方式渲染页面。
具体些:
DOCTYPE是document type(文档类型的)的简写,它必须放每个XHTML页面在所有的标识文档和代码之上。它是用来说明你的XHTML或HTML是什么版本。需要注意一下的是: 在HTML 5 中,DOCTYPE 是不区分大小写;不过对于XHTML、Polyglot HTML,DOCTYPE 这几个字母需要大写。如果怕和我一样容易忘记的话,就都默认大写就好啦。
其中浏览器的渲染模式主要是有三种:Quirks Mode(混杂模式、怪异模式、兼容模式。因为翻译不同的原因)、Standards Mode(标准模式、严格模式)、Almost Standards Mode(几乎标准模式)。
而浏览器之所以可以识别我们页面想要的版本就是DTD的存在(文档类型定义,浏览器会根据里面所规定的文档规则来读取你的标识的)。
HTML 和 XHTML 的DOCTYPE 声明都有 strict/transitional/frameset 三种模式。 strict 模式禁止所有 presetational or deprecatedelements(例如 font 标签)以及 frameset标签();transitional 模式只禁止了 frameset标签;frameset 模式与 transitional 模式相同,并且允许 frameset 标签。
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,你不能使用任何表现层的标识和属性,例如
,完整代码如下: <!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 理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0
Transitional)是目前理想选择。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
注:上面说的”表现层的标识、属性”是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。
打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难
更加全面、标准的论述可以参考文档 ActivatingBrowser Modes with Doctype