DOCTYPE声明文档类型,以便验证文档是否符合文档类型定义(DTD),同时指定了浏览器关于页面使用哪个HTML版本进行编写的指令。开发人员在编写完html代码后,要进行有效性验证。w3c提供了一个验证文档有效性的在线服务:http://validator.w3.org/。
DOCTYPE声明不是html标签,必须放在html文档的第一行,而且绝不能在它之前添加xml声明语句,否则在IE6会触发怪异模式。在HTML 4.0中,DOCTYPE引用了DTD,因为HTML 4.0基于SGML。DTD规定了标记语言的规则,这样浏览器才能正确的呈现内容。HTML5不是基于SGML,所以不需要引用DTD。
HTML4支持三种DOCTYPE声明,而HTML5只支持一种,即:
<!DOCTYPE html>
HTML4支持的三种DOCTYPE声明分别是严格型(strict)、过渡型(transitional)和框架型(Frameset)。
严格型的DTD声明包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。声明举例如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
过渡型的DTD声明包含所有HTML元素和属性,包括展示性和弃用的元素。但不允许框架集。声明举例如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
框架型的DTD声明等同于过渡型,但允许框架集内容。声明举例如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
对CSS而言,更重要的是DOCTYPE声明决定了浏览器所使用文档渲染方法符合CSS标准的程度。浏览器使用两种基本的模式,怪异模式和标准模式。二者的区别在于前者不遵循CSS规范,后者遵循CSS规范。DOCTYPE声明会触发浏览器的标准模式。
HTML5极大简化了DOCTYPE声明,即使对于未实现HTML5标准的主流浏览器,都会检查文档类型声明,并将内容切换到标准模式,因此我们现在就可以使用HTML5编写网页,而不必担心将来出现兼容性问题。