定义
DOCTYPE标签,是一种标准通用标记语言的文档类型声明,目的是告诉标准通用标记语言解析器,使用哪种文档类型定义(DTD)解析文档。
DOCTYPE,document type(文档类型)的简写,它指示浏览器对页面使用哪个HTML版本编译。
如果不写DOCTYPE标签,浏览器将无法获知HTML或XHTML文档的类型,就会进入怪异模式。
浏览器两种表现模式:
Standards Mode(Strict Mode) 标准模式(严格模式)浏览器使用自己的怪异模式解析绚烂页面
Quirks Mode(Compatibility Mode) 怪异模式(兼容模式)浏览器使用W3C的标准解析渲染页面
如果浏览器进入怪异模式,就会按自己的方式解析渲染页面,那么在不同的浏览器下会显示不同的样式。然而,只要文档正确定义DOCTYPE,浏览器就会进入标准模式。按照W3C的标准来解析渲染。你的页面在所有的浏览器下样式都保持一致。(备注:IE6以下版本永远进入怪异模式)
使用
<!DOCTYPE>声明必须写在HTML文档第一行,位于<html>标签之前。
<!DOCTYPE>声明不区分大小写。
浏览器支持:所有浏览器都支持<!DOCTYPE>声明。
常用的DOCTYPE声明
HTML 5
<!DOCTYPE html>
HTML 5与之前HTML 4.01<!DOCTYPE>声明的区别就在于,HTML 5不基于SGML,所以不需要引用DTD(文档类型定义)。HTML 4.01因为基于SGML,所以在<!DOCTYPE>声明中需要引用DTD。DTD规定了标记语言的规则,这样浏览器才能正确地呈现内容。
HTML 4.01 提供了三种DTD声明,不同的DTD对文档的类型要求严格程度不同。
HTML 4.01 Strict (严格型)
<!DOCTYPE HTML PUCLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
该DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素(如font)。不允许框架集(Framesets)。要求严格的DTD,你不能使用任何表现层的标识和属性。
HTML 4.01 Transitional(过渡型)
<!DOCTYPE HTML PUCLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
该DTD包含所有HTML元素和属性,包括展示性的和弃用的元素(如font)。不允许框架集(Framesets)。要求非常宽松的DTD,她允许你继续使用HTML 4.01的表示,但要符合XHTML的写法。
HTML 4.01 Frameset(框架型)
<!DOCTYPE HTML PUCLIC “-//W3C//DTD HTML 4.01 Frameset/EN” “http://www.w3.org/TR/html4/frameset.dtd”>
该DTD等同于HTML 4 Transitional,但允许框架集内容。专门针对框架页面设计使用的DTD,如果你的页面中包含框架,需要采用这种DTD。
理想情况下使用严格型的DTD,但对于很多刚接触Web标准的前端工程师来说,过渡型的DTD是目前理想的选择。因为过渡型DTD允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
HTML 1.0 Strict
<!DOCTYPE HTML PUCLIC “-//W3C//DTD HTML 1.0//EN” “http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd”>
该DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素(如font)。不允许框架集(Framesets)。必须以格式正确的XML来编写标记。
HTML 1.0 Transitional
<!DOCTYPE HTML PUCLIC “-//W3C//DTD HTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/xhtml1-loose.dtd”>
该DTD包含所有HTML元素和属性,包括展示性的和弃用的元素(如font)。不允许框架集(Framesets)。必须以格式正确的XML来编写标记。
HTML 1.0 Framesetyuxi
<!DOCTYPE HTML PUCLIC “-//W3C//DTD HTML 1.0 Frameset/EN” “http://www.w3.org/TR/xhtml1/xhtml1-frameset.dtd”>
该DTD等同于XHTML 1.0 Transitional,但允许框架集内容。
XHTML 1.1
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
该DTD等同于XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的ruby支持)。
/*此随笔内容根据网上内容整理而成,非原创。如有侵权,表示歉意,请告知于我。*/
参考内容:
[1]W3School HTML<!DOCTYPE>标签:http://www.w3school.com.cn/tags/tag_doctype.asp
[2]为什么使用<!DOCTYPE HTML>:http://i.wanz.im/2010/05/28/why_doctype_html/
[3]doctype有几种:http://zhidao.baidu.com/link?url=-QnZIO9tbdL0R5pr23KsErf08Q0XVefDcniSASjhigLCCJ9dCzBLxw_FYOJcwJdH3aipQbZi89B3kjDyknRyIeY8lyL-t2VzvoFXtn_dOnC