一 HTML版本——浏览器向后兼容性(What & Why)
在介绍什么是Doctype之前,我们先了解一下 HTML版本。
从HTML的产生到HTML5的提出,经历了几十年的发展和完善。这就导致了许多的web页面,使用HTML的老版本写的。每个版本的标签、语法都不完全相同,很多标签都已经被替换或者废弃了。
结论1:
所以浏览器就得:既能支持由老版本HTML写的网页,也要支持最新标准的网页(即向后兼容性)
二 文档类型(DOCTYPE)
1 什么是DTD (What):
不同的HTML版本(标准)的语法规则的不同的,这就意味着相对应的浏览器实际页面渲染机制也不相同。因此就需要引入DTD(文档类型定义)
1 DTD是一组机器可读的规则,它定义HTML的特定版本的规则里,允许有什 么,不允许有什么;
2 解析页面时,浏览器就利用这些规则,检查页面的有效性,并进行渲染。
而DOCTYPE声明,就是用来描述使用哪个DTD的。
2 什么是DOCTYPE (What):
- 用来告知浏览器的解析器,使用哪个DTD;
- DOCTYPE声明通常(但不总是)包含 指定的DTD文件的URL;
- 它位于位于 HTML文档中的第一行;
- DOCTYPE当前有两种风格,严格模式和过渡模式。
三 浏览器模式 和 DOCTYPE切换
1 浏览器模式
上文提到,浏览器需要确保向后兼容性(Why and what见上文);
为了实现这一点,浏览器创建了2种呈现模式:标准模式和兼容模式
在标准模式中,浏览器根据 当前支持的最新规范 呈现页面;
在兼容模式中,页面以一种比较宽松的向后兼容的方式显示,它通常模拟老式浏览器的行为,以防止老站点无法工作;
2 DOCTYPE切换
呈现 浏览器模式的依据:
- DOCTYPE 是否存在;
- 使用的 DTD类型;
当DOCTYPE不存在或形式不正确时,就会导致HTML文档以混杂模式呈现。
根据DOCTYPE是否存在 选择呈现模式,被称为DOCTYPE切换;
DOCTYPE切换 是浏览器用来区分 遗留文档和符合标准文档的手段;
如果选择了错误的DOCTYPE,那么页面就将以混杂模式呈现,其行为就可能会有错误或不可预测。
四 小结
1 DOCTYPE声明的作用:
1 帮助浏览器进行对页面的有效性验证:
浏览器解析页面规则——需要知道DTD—— DOCTYPE声明可以指定使用哪个DTD;
所以,DOCTYPE声明告知浏览器的解析器,用什么文档标准解析这个文档;
2 影响浏览器以何种模式呈现页面:
浏览器创建了2种呈现模式:标准模式和兼容模式;
DOCTYPE不存在或格式不正确,会导致文档以兼容模式呈现
2 HTML5文档声明:
HTML5不基于SGML,所以不需要引用DTD;
但是它需要doctype来规范浏览器的行为,让浏览器按照正确的方式运行;
而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
3 Refernce:
精通CSS