区分IE8 、IE9 的专属css hack 整理

本文将介绍一种用于解决在IE8和IE9上实现CSS3样式的策略,包括使用特定的CSS hack来适配这两款浏览器。通过结合不同方法,确保在IE8及以下版本的浏览器上也能获得与现代浏览器类似的效果。

一般来说,我们写的结构比较好的时候,IE8/9下是没区别的.所以可能很少人关注只有IE8或只有IE9才识别的css hack.

因为IE8及以下版本是不支持CSS3的,但是我们如果使用css3,在IE下IE9正常渲染,但我们又想让IE8及以下的浏览器实现同样的效果,且不希望使用css3pie或htc或条件注释等方法时,可能就会需要用到IE8和IE9的专属css hack了.

  1. .test{ /* 1. */
            /* color:#09F\0; 以前是IE8/9, 现在10也支持 */
            color:#09F\0/; /* 以前是IE8 only, 现在IE9/10也支持. 如要排除IE9需要使用下面的rule重设IE9样式 */
    }
    @media all and (min-width:0) { /* 2. */
        .test{color:red\9; }/* IE9 only, 现在IE10也支持 */
        /* Ps:老外的方法都是\0,根本没考虑Opera */
    }
    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* 3. */
       .test { color: green; } /* IE10+ */
    }
    :root .test { color:#963\9; } /* 以前IE9 only, 现在10也支持, 优先级高于@media, 优先级太高, 尽量少用 */

    注: IE老不按规矩, 以前IE8 only/IE9 only的hack, IE10 一出现都乱套了~ 
    为了避免看此文的同学失望而归, 从新又整理了一下内容(2013-01-28), 如有错误望指出.
    现在, 要想写出专门针对ie8或ie9的hack, 把1/2/3种组合在一起使用. 如果可以, 使用CSS条件注释更靠谱.

    此hack已经加入到我08年写的那个用css 写的一个浏览器检测中。

整理:
(“√”代表可识别优先,“x”代表不可识别)   
示例:(FF:white;IE7:greenIE6:orange) 
  只针对FF与IE6(IE7): 
  background:white; 
  *background:orange; 
  只针对IE7与IE6: 
  background:green; 
  _background:orange; 
  or… 
  background:green !important 
  background:orange; 
  只针对FF、IE7与IE6: 
  background:white; 
  *background:green; 
  _background:orange; 
  or… 
  background:white; 
  *background:green !important 
  *background:orange; 
  总结: 
  书写顺序:FF;IE7;IE6 
  操作顺序: 
  方法1[推荐] : 
  1.先调Firefox。无优先标识 
  2.调IE7,使用*标识。继承1设定。 
  3.调IE6,使用_标识。继承1、2设定。 
  方法2: 
  1.先调Firefox。无优先标识 
  2.调IE7,使用*+!important标识。继承1设定。 
  3.调IE6,使用*标识。继承1、2设定。 

       padding:9px\9; /* all ie */     
        padding:8px\0; /* ie8-9 */     
        *padding:5px; /* ie6-7 */     
       +padding:7px; /* ie7 */     
        _padding:6px; /* ie6 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值