(1)如何触发两种模式:
加入xml头部声明,可以触发IE浏览器的Quirks mode,触发之后,浏览器解析方式就和IE5.5一样,拥有IE5.5一样的bug和其他问题,行为(Javascript)也是如此。 (2)IE6的触发:在XHTML的DOCTYPE前加入XML声明,<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">(3)IE7的触发:在XML声明和XHTML的DOCTYPE之间,加入HTML注释 <?xml version="1.0" encoding="utf-8"?><!-- ... and keep IE7 in quirks mode --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">(4)IE6和IE7都可以触发的:在HTML4.01的DOCTYPE文档头部,加入HTML注释<!-- quirks mode --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">(5)在页面顶部加 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ,将触发“怪异模式”(6)没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本上所有的浏览器都是使用quirks mode呈现如何判定现在是标准模式,还是怪异模式:方法如下,执行代码alert(window.top.document.compatMode) ;//BackCompat 表示怪异模式//CSS1Compat 表示标准模式意义:各个浏览器的混杂模式,基本就是各个浏览器的私有模式,不相互兼容。所以,除非是为了兼容的问题,比如你不想修改很久很久以前做的IE ONLY的网页,否则,刻意触发混杂模式没有任何意义。区分是标准模式还是混合模式,有其重要的意义所在,那就是确定页面解析时,使用的是“标准盒Box模型“,还是使用“传统Box模型“。在mozilla firefox 和 IE中的BOX模型其解释中,因不一致导致相差2px的宽度,其解决方法:div{ margin:30px!important; margin:28px;}注意这两个margin的顺序一定不能写反,!important这个属性IE6不能识别,但IE7能识别,且IE8属于标准浏览器类型;故也支持。别的浏览器可以识别。所以在IE6下其实解释成这样:div{ margin:30px; margin:28px}重复定义的话按照最后一个来执行。IE5 和IE6的BOX解释不一致IE5下div{width:300px;margin:0 10px 0 10px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充),最终div的宽度为280px,而在IE6和其他浏览器上,div宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改div{ width:300px!important; width /**/:340px; margin:0 10px 0 10px}关于这个/**/是什么?也不太明白,只知道IE5和firefox都支持,但IE6不支持。