HTML中DOCTYPE头的作用是什么?
概述
HTML
文档类型声明,也被称为 DOCTYPE
,是每个 HTML
或 XHTML
文档中需要的第一行代码。 DOCTYPE
声明是给 Web
浏览器的一个指令,说明网页是用什么版本的 HTML
写的。 这可以确保不同的网络浏览器对网页的解析方式是相同的。
在 HTML 4.01
中,DOCTYPE
声明是指文档类型定义(DTD
)。 DTD
定义了一个 XML
文档的结构和元素。 因为 HTML 4.01
是基于标准通用标记语言(SGML
)的,所以在 DOCTYPE
声明中提到 DTD
是必要的。
此外,HTML 4.01
的 doctype
要求声明 strict
、transitional
或 frameset
DTD
,每一种都有不同的使用情况,如下所述:
- 严格型
DTD
:用于排除某些属性和元素的网页 —— W3C 希望随着CSS
支持的增加而逐步淘汰这些属性和元素。 - 过渡型
DTD
:用于包括某些属性和元素的网页 —— W3C 希望随着CSS
支持的增加而逐步淘汰这些属性和元素。 - 框架型
DTD
:用于带有框架的网页。
相比之下,HTML5 DOCTYPE
的声明要简单得多:它不再需要引用 DTD
,因为它不再基于 SGML
。请看下面的例子来比较 HTML4.01
和 HTML5 DOCTYPE
。
示例
HTML5
及以后的doctype
语法:
<!DOCTYPE html>
- 严格型
HTML 4.01
的doctype
语法:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- 过渡型
HTML 4.01
的doctype
语法:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- 框架型
HTML 4.01
的doctype
语法:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
历史
在 HTML
的形成期,web
标准还没有达成一致。浏览器供应商会以他们想要的方式创建新的特性。人们很少关注竞争性的浏览器。
其结果是,web
开发者不得不选择一个浏览器来开发他们的网站。这意味着网站在不支持的浏览器中无法很好地呈现。这种情况不能再继续下去了。
W3C
(万维网联盟)制定了一套 web
标准来处理这种情况。所有的浏览器供应商和 web
开发人员都应该遵守这些标准。这将确保网站在不同的浏览器上都能很好地呈现。
该标准所要求的变化与一些现有的做法有很大的不同。遵循这些标准会破坏现有的不符合标准的网站。
为了解决这个问题,供应商开始在他们的浏览器中设置渲染模式。web
开发者需要在 HTML
文档的顶部添加一个 doctype
声明。doctype
声明将告诉浏览器对该文档使用何种渲染模式。
各个浏览器通常有三种不同的渲染模式:
- 完全标准模式是根据 W3C 网络标准来渲染页面。
- 怪异模式以不符合标准的方式渲染页面。
- 准标准模式接近于完全标准模式,但具有支持少量怪异的特性。
在现代的 HTML5
时代,web
标准在所有主要的浏览器中都得到了充分的实施。网站一般都是以符合标准的方式开发的。 正因为如此,HTML5 doctype
声明的存在只是为了告诉浏览器以完全标准模式来渲染文档。
使用
除了注释之外,doctype
声明必须是 HTML
文档中的第一行代码,如果需要,注释可以放在前面。对于现代 HTML5
文档,doctype
声明应该如下:
<!DOCTYPE html>