专注于WEB前端开发, 追求更好的用户体验, 更好的开发体验 [长沙前端QQ群:234746733]

区分IE8 、IE9 的专属css hack

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

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

.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 写的一个浏览器检测中。

/ 分类: 开发 / TrackBackhttps://xhl.me/archives/ie8-ie9-css-hack/trackback标签: css

已有 8 条评论 »

  1. Hedgehog Hedgehog

    都试过了,还是不行

    1. kairyou kairyou

      IE8 only的现在应该没了, 如果要ie8 only的, 可以先写IE8/9的hack, 再写IE9的hack把样式重设, 间接做到IE8 only.

      1. Hedgehog Hedgehog

        之前试是不可以,现在试又可以了……可能以前哪里写错了……不过还是灰常感谢

      2. reyhappen reyhappen

        ie8 only body{background:#f00\0/;},这评论有意思啊,还必须有中文。

  2. mask mask

    有用。实际上\9\0; /* ie 9 only*/是不对滴
    你说的:root .test { color:#963\9; } /* IE9 only */ 有效,非常感谢!

  3. shown shown

    @Kairyou
    你好,我试用以下css ie9和其他浏览器效果一样,并没有生效,请问我是不是哪里弄错了? 不知可否告知

    .test{color:#09C;font-size:100px;}
    :root .test{color:#C00\9;font-size:10px\9;}

    1. kairyou kairyou

      @shown
      你好, 写法没错, IE的开发人员工具, 检查下:浏览器模式/文档模式是不是都是IE9.

    2. pro pro

      root我现在用是对9+生效,也对ff chrome生效。组合用前面3个可以设置8、9、10 only。

添加新评论 »