
<!DOCTYPE html>
以上代码应该都很熟悉,我们经常在自己的html文件的开头加上这行代码,这叫作文档类型声明。这行代码至关重要,因为如果在文档的开头没有文档类型声明,则所有浏览器都会默认开启混杂模式,但不同浏览器在这种模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有什么一致性可言。 因此在HTML5中只要加上了上面的那一行代码,就开启了标准模式。此时浏览器就只能老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有浏览器里显示的就是一个样子。
##扩展 DOCTYPE:一种标准通用标记语言的文档类型声明,作用就是告诉标准通用标记语言解析器,他应该用什么样的文档类型定义(DTD)来解析文档,也就是我们上面说的声明文档的解析类型,避免浏览器的怪异模式(按照浏览器自己的方式来解析执行代码,即混杂模式)。 #####原理
有一个属性叫document.compatMode它有两个值:
- BackCompat:怪异模式,浏览器是用自己的方式解析渲染页面;
- CSSCompat:标准模式,浏览器使用W3C标准解析渲染页面;
document.compatMode属性会被浏览器识别并使用,但是如果你的页面里没有DOCTYPE声明,那么compatMode默认为BackCompat,浏览器就会按照自己的方式解析渲染页面,即混杂模式。
关于名称,因为看到有很多地方说法不同,我理解的是这样的: 标准模式 === 严格模式:指浏览器按照 W3C 标准解析代码。 混杂模式 === 怪异模式:指浏览器用自己的方式解析代码。