css ie hack整理

网上有不少关于ie hack的文章,可能因为文章发布后ie的版本还在升级。因此致使有些hack写法已经不适用了。如下是本人整理的ie6-11的一些hack经常使用写法。(如下默认文档模式为标准模式)css

1.经过条件判断ie版原本引用不一样的css浏览器

<!--[if IE]>只试用ie浏览器<![endif]-->
<!--[if !IE]>只试用非ie浏览器<![endif]-->
<!--[if IE 6]>只试用ie6浏览器<![endif]-->
<!--[if gt IE 6]>只试用大于ie6浏览器<![endif]-->
<!--[if lt IE 9]>只试用小于ie9浏览器 <![endif]--> 
<!--[if gte IE 8]>只试用大于或等于ie8浏览器<![endif]--> 
<!--[if lte IE 7]>只试用小于或等于ie7浏览器<![endif]-->

以上方式以此类推,能够经过引用不一样的外链css或直接使用内嵌样式表 来知足基本要求。测试

 

2.直接使用css属性的hack写法。spa

1)!important  因为ie6不知别!important,其余浏览器都识别,因此能够用于ie6 hack。blog

div{
  max-width:100px;
  width:auto !important;
  width:100px;          
}

 

2)  下划线 '_'   ie6的有一个专用hack写法。文档

div{
  color:blue;
  _color:red;  /*只有在ie6下才会表现为红色*/
}

 

3) 星号 '*'  ie6,7的公用写法。  class

div{
  color:blue;
  *color:red;   /*在ie6,7下都会表现为红色*/
}

ie7没有专用写法,*会同时识别ie6,7,若是只想识别ie7,能够同时配合下划线‘_’使用。  import

 

4) \0   ie8及以上浏览器都会识别\0写法,ie6,7不识别hack

div{
    color:red;
    color:#ccc\0;
}

以上写法只有ie8及以上浏览器都会识别,ie6,7不识别,并且会致使ie6,7不识别普通写法(color:red),须要同时使用'*'来适配ie6,7。引用

 

5)\9   ie6-10都识别\9,10以上不识别

div{
    color:red;
    color:blue\9;                   /*ie 6-10都为blue*/
} 

 

6)\9\0  ie9,10识别   ie8,11不识别,使用默认    ie6,7不识别,也不使用默认

div{
  color:red;
  color:blue\9\0;  
}

以上写法在ie9,10中会表现会蓝色,在ie8,11下会表现为红色,而在ie6,7下则表现为黑色,须要单独为ie6,7使用 '*' hack。

 

以上就是总结的ie hack写法,代码和例子均测试过。欢迎你们补充,分享。

最后说一句,若是能够经过其余方式避免ie不一样版本表现不一致,尽可能不要使用hack写法。