分享人:熊凡
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
DOCTYPE是document type(文档类型)的简写,在web设计中用来声明文档类型。
在所有 HTML 文档中规定 DOCTYPE 是非常重要的,这样浏览器就能了解预期的文档类型, 告诉浏览器要通过哪一种规范(DTD)解析文档(比如HTML或XHTML规范)。
DOCTYPE声明必须在 HTML 文档的第一行,它不属于 HTML 标签; 它是一条指令,告诉浏览器编写页面所用的标记的版本。
doctype会影响代码验证,并决定了浏览器最终如何显示你的Web文档。
HTML 4.01 中的 doctype 需要对 DTD 进行引用,因为 HTML 4.01 基于 SGML。
DTD:(Document Type Definition)文档类型定义是一种特殊文档,它规定、约束符合标准通用标示语言(SGML)或SGML子集可扩展标示语言(XML)规则的定义和陈述。
SGML:标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言; 通用标言为语法置标提供了异常强大的工具,同时具有极好的扩展性,因此在数据分类和索引中非常有用; 是所有电子文档标记语言的起源,早在万维网发明之前“通用标言”就已存在。
Doctype可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。
超文本严格文档类型定义HTML Strict DTD 不允许使用表现性、废弃元素(如font)以及frameset。声明:
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
超文本过渡文档类型定义HTML Transitional DTD 允许使用表现性、废弃元素(如font),不允许使用frameset。声明:
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
超文本框架集文档类型定义HTML Strict DTD 允许表现性元素,废气元素以及frameset。声明:
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
现代的浏览器需要不同模式, 既要呈现久远的HTML界面, 不至于界面结构混乱不堪,也需要呈现W3C标准的界面:
标准模式(strict)---是指浏览器按照 W3C 标准解析代码,呈现页面
怪异模式---是指浏览器用自己的方式解析代码,即使用一种比较宽松的向后兼容的方式来显示页面
浏览器根据不同的DOCTYPE选择不同的渲染方法就叫做DOCTYPE切换。 其实DOCTYPE切换就是用来识别和兼容旧网页的。
给出了完整的DOCTYPE声明
DOCTYPE声明了Strict DTD
DOCTYPE声明了Transitional DTD和URI
DOCTYPE声明了Transitional DTD但未给出URI
DOCTYPE声明不合法
未给出DOCTYPE声明
HTML5协议下 统一写 < !DOCTYPE html>。
HTML 5 不基于 SGML,因此不需要对 DTD 进行引用,也就没有严格模式与怪异模式的区别,但是需要 doctype 来规范浏览器的行为(html 5简化了这种声明,意在告诉浏览器使用统一的标准即可);HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)
如果你是使用最新标准编写的页面但未给出DOCTYPE声明,浏览器会采用怪异模式渲染,这时就可能会出现一些怪异的行为。 例如盒模型不正确、窗口的size不正确等问题。所以,尽量为你网站的所有页面都给出合法的DOCTYPE声明。
除了不写DOCTYPE声明外,最常见的就是在DOCTYPE声明前面出现了这些内容:普通文本、HTML 标签、HTML 注释、XML 声明、IE条件注释。
谢谢大家
制作人:熊凡