文档模式
IE5.5引入了文档模式的概念,这个概念是通过使用文档类型(doctype)切换实现的。
最初的两种文档模式是:混杂模式(quirks mode)和标准模式(standards mode)。
混杂模式会让IE的行为与(包含非标准特性的)IE5相同,而标准模式则让IE的行为更接近于标准行为。虽然这两种模式主要影响CSS内容的呈现,但在某些时候,也会影响JavaScript执行的情况。
在IE引入文档模式的概念后,其他浏览器也纷纷效仿。在此之后IE又提出了一种所谓的准标准模式(almost standards mode)。这种模式下的浏览器特性有很多都是符合标准的,但也不尽然。不标准的地方主要体现在处理图片间隙的时候。
如果在文档开始没有发现文档类型声明,则所有的浏览器都会默认开启混杂模式。但用混杂模式不是值得推荐的方法。因为不同浏览器在这种模式下的行为差异非常大,如果不适用某些hack技术,跨浏览器的行为根本就没有一致性可言。
标准模式的开启方式:
<!-- HTML 4.01 严格型 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!-- XHTML 1.0 严格型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
准标准模式,可以通过使用过渡型(transitional)或框架型(frameset)文档类型来触发。
<!-- HTML 4.01 过渡型 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- HTML 4.01 框架集型 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <!-- XHTML 1.0 过渡型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- XHTML 1.0 框架集型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
准标准模式与标准模式非常接近,他们的差异几乎可以忽略不计。因此当提到“标准模式”时,可能是指的其中的任何一种。而且检测文档模式时也不会发现有什么不同的。
IE8中又引入了一种新的文档模式,叫做超级标准模式。超级文档模式可以让IE以其所有版本中最符合标准的方式来解释网页内容。总的来看,混杂模式让IE像IE5,标准模式使用IE7的呈现引擎,而超级标准模式则是IE8的默认文档模式——不过,在IE8中使用下面的特殊的<meta>值可以关闭其默认的文档模式:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
设计这个值的目的就是为了向后兼容那些专门为老版本的IE设计的站点也页面。
与标准模式类似,超级标准模式与标准模式一边也不会有什么差异。