码迷,mamicode.com
首页 > 其他好文 > 详细

Doctype文档声明的严格模式和混杂模式,如何触发这两种模式,区分它们有何意义?

时间:2014-12-06 22:42:58      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   ar   color   使用   sp   java   strong   

(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不支持。

Doctype文档声明的严格模式和混杂模式,如何触发这两种模式,区分它们有何意义?

标签:style   http   io   ar   color   使用   sp   java   strong   

原文地址:http://www.cnblogs.com/qiuna/p/4148805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!