芒果小站

  1. 全球最具业界良心的主机 - Linode

    毫无疑问,目前做得最好的主机供应商

    猛击这里查看

  2. 芒果小站目前使用的主机 - Linode

    客服响应快,随时退款,XEN 架构稳定

    猛击这里查看

  3. 最好的日本东京线路主机 - Linode

    可选弗里蒙特、达拉斯、亚特兰大、纽瓦克、伦敦、东京机房

    猛击这里查看

  • 1
  • 2
  • 3
切换到精简模式
11

抛弃 CSS Hacks 后的浏览器兼容方案

作者 芒果/分类 代码/发布于 2011-11-16 21:27

如果你看过之前发在芒果小站的《CSS 忍者:安全的 CSS hacks 秘籍 》这篇文章,应该基本清楚了通过 IE 条件注释替代 CSS Hacks 的技巧。最近考虑在项目中实际应用这个方案。

一般情况下的浏览器兼容需要考虑 IE6/7/8 三种 IE 版本,当然在 IE9 开始逐步推向市场后,又会有更多的衍生版本。所以我目前只考虑 IE7~9 版本的兼容情况。涉及到的条件注释代码如下:

<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie ie6"><![endif]-->
<!--[if IE 7 ]><html class="ie ie7"><![endif]-->
<!--[if IE 8 ]><html class="ie ie8"><![endif]-->
<!--[if IE 9 ]><html class="ie ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html><!--<![endif]-->

使用说明如下:

.test {
    /* 针对非 ie 浏览器的样式 */
}
.ie .test {
    /* 针对所有 ie 版本的样式 */
}
.ie6 .test {
    /* 针对 ie6 的样式 */
}
...
.ie9 .test {
    /* 针对 ie9 的样式 */
}

之前那篇文章里也有同学提出通过 PHP 判断 UA 参数并动态输出样式表的方法,这个虽然是简洁明了,但和后端代码耦合在一起,总觉得不是一回事。况且实际应用中很多情况下会将页面模板化,做动态输出并不非常适合。

另外,国内各大双核高速安全的壳浏览器还没有经过测试,这个需要再做了解。

2011.11.18 日补充:

附上一份 demo,请使用不同版本 ie 浏览器预览该演示页面:cross_browser_compatible_no_css_hacks.html

版权所有,转载请注明出处。
转载自 <a href="http://mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案" rel="bookmark">抛弃 CSS Hacks 后的浏览器兼容方案 | 芒果小站</a>
如果喜欢这篇文章,欢迎订阅芒果小站以获得最新内容。

已经有 11 条群众意见

  1. Sivan /2011-11-17 00:17

    你是不是把class那些忘了。。。 回应

    #1
  2. 芒果Sivan/2011-11-17 00:51

    被 WordPress 过滤了…… 回应

    #2
  3. python_fans /2011-11-17 00:55

    了解下。。。 回应

    #3
  4. 前端开发 /2011-11-17 08:59

    这种方式现在有些网站在用,但是觉得怎么会有这么多的hack呢 回应

    #4
  5. 芒果前端开发/2011-11-17 12:58

    因为各个浏览器的渲染都不一致! 回应

    #5
  6. 输送机 /2011-11-17 17:13

    早就抛弃hack,,, 回应

    #6
  7. 宝宝健康成长 /2011-11-18 05:44

    有了ie,一切都很麻烦的 回应

    #7
  8. 厨房电器 /2011-11-18 14:42

    wp可以过滤?强悍。 回应

    #8
  9. Yoyo /2011-11-28 17:57

    浏览器兼容整死人了~~~~~~~~ 回应

    #9
  10. mice /2011-12-12 11:40

    sogou浏览器 俩核都显示正确 -,- 回应

    #10
  11. ?
    IE6这么多,我该怎么办? - WordPress - 开发者 /2013-06-13 20:44

    […] 兼容好IE6。。 回复: 兼容好IE6。。 回复: 俺已经开始抛弃 hacks 了 http://www.mangguo.org/after-aba … ompatible-solution/ 回复: 兼容IE6,并在网站给ie6用户弹窗提示升级浏览器 […] 回应

    #11

下面我简单说几句