关于Doctype与浏览器呈现模式

一 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切换

呈现 浏览器模式的依据:

  1. DOCTYPE 是否存在;
  2. 使用的 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

原文地址:https://www.cnblogs.com/ygming/p/8283344.html