一、文档模式以及DOCTYPE

 面试中也常会问到关于文档模式的问题,那么我们就来了解一下文档模式到底是什么呢,以及它影响着什么呢?
文档模式的概念是由IE提出的,最初有两种文档模式:混杂模式和标准模式。两种模式主要会影响CSS内容的呈现,但在某些情况下也会影响到Javascript的解释执行。IE先提出后,其他浏览器纷纷效仿,因此浏览器都有这两种文档模式,决定着网页将会以什么样的行为准则渲染。

<!DOCTYPE html>

  以上代码应该都很熟悉,我们经常在自己的html文件的开头加上这行代码,这叫作文档类型声明。这行代码至关重要,因为如果在文档的开头没有文档类型声明,则所有浏览器都会默认开启混杂模式,但不同浏览器在这种模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有什么一致性可言。
因此在HTML5中只要加上了上面的那一行代码,就开启了标准模式。此时浏览器就只能老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有浏览器里显示的就是一个样子。

扩展

DOCTYPE:一种标准通用标记语言的文档类型声明,作用就是告诉标准通用标记语言解析器,他应该用什么样的文档类型定义(DTD)来解析文档,也就是我们上面说的声明文档的解析类型,避免浏览器的怪异模式(按照浏览器自己的方式来解析执行代码,即混杂模式)。

原理

有一个属性叫document.compatMode它有两个值:

  • BackCompat:怪异模式,浏览器是用自己的方式解析渲染页面;
  • CSSCompat:标准模式,浏览器使用W3C标准解析渲染页面;

document.compatMode属性会被浏览器识别并使用,但是如果你的页面里没有DOCTYPE声明,那么compatMode默认为BackCompat,浏览器就会按照自己的方式解析渲染页面,即混杂模式。

关于名称,因为看到有很多地方说法不同,我理解的是这样的:
标准模式 === 严格模式:指浏览器按照 W3C 标准解析代码。
混杂模式 === 怪异模式:指浏览器用自己的方式解析代码。

猜你喜欢

转载自www.cnblogs.com/youyang-2018/p/11668500.html
今日推荐