DOCTYPE 是 document type (文档的类型)的缩写,在web中你要告诉浏览器你的XHTML或者HTML是用的什么版本,可以让浏览器根据你声明的版原本解析html文档,不写《!doctype》,你的标识和css都不会生效。css
<!DOCTYPE>位于html第一行,他在HTML中的doctype有两个主要目的。html
(1)对文档进行有效性验证。git
他告诉用户代理和校验器这个文档是按照什么DTD写的。这个动做是被动的,每次页面加载时,浏览器并不会下载DTD并检查合法性,只有当手动校验页面时才启用。github
(2)决定浏览器的呈现模式web
对于实际操做,通知浏览器读取文档时用哪一种算法。若是没有写,则浏览器则根据自身的的规则对代码进行解析,可能严重影响html排版布局。浏览器有三种方式解析HTML文档。算法
非怪异(标准)模式浏览器
怪异模式框架
部分怪异(近乎标准)模式布局
HTML DOCTYPE文档类型举例说明spa
HTML4.01文档过渡定义类型,此类型定义的文档可使用HTML中的标签与元素包括一些不被W3C推荐的标签(例如:font、b等),不可使用框架
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
HTML4.01文档严格定义类型,此类型定义的文档可使用HTML中的标签与元素,不能包含不被W3C推荐的标签(例如:font、b等),不可使用框架
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
HTML4.01文档框架定义类型,此类型等同于HTML4.01文档过渡定义类型,但可使用框架
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
XHTML1.0文档过渡定义类型,此类型定义的文档可使用HTML中的标签与元素包括一些不被W3C推荐的标签(例如:font、b等),不可使用框架(推荐使用)
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
XHTML1.0文档严格定义类型,此类型定义的文档只可使用HTML中定义的标签与元素,不能包含不被W3C推荐的标签(例如:font、b),不可使用框架
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
XHTML1.0文档框架定义类型,等同于XHTML1.0文档过渡定义类型,但可使用框架
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
XHTML1.1文档严格定义类型,等同于XHTML1.0文档过渡定义类型
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
HTML5文档类型
1
|
<!DOCTYPE html>
|
<!DOCTYPE>的用法
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
解析:在上面的声明中,声明了文档的根元素是 html,它在公共标识符被定义为 “-//W3C//DTD XHTML 1.0 Strict//EN” 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。若是找不到,浏览器将使用公共标识符后面的 URL 做为寻找 DTD 的位置。
HTML5 为何只须要写 <!DOCTYPE HTML>?
HTML5 不基于 SGML,所以不须要对DTD进行引用,可是须要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);而HTML4.01基于SGML,因此须要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
参考连接:https://zh.wikipedia.org/wiki/SGML