[译]IE 条件注释

foxbiteie[2]原贴:IE Conditional Comments

作者:David Walsh

WD们天天折腾最多的 web 浏览器是IE。微软当前有三款不同的版本占据国内70%以上桌面浏览器市场份额。尤其是 IE 6 及其以它为内核的国内浏览器帮凶十年如一日的强暴着国内用户。在无情的市场面前我们不得不与 IE 整日肉搏。

CSS 和 JavaScript 在各个 IE 上总会或多或少有这样那样的奇怪问题。如最常见的:双倍 margin、浮动与绝对定位、不支持 PNG 等问题。还好,IE 条件注释可以用 HTML 的 target block(目标块)指定是哪个版本的 IE 还是所有版本的 IE。

IE 条件注释示例:

<!--[if IE]>
<style type="text/css">
a { color:#fff; }
</style>
<![endif]-->

上面代码的意思是将 IE 的所有链接的颜色设为 #fff 的16位制值。

<!--[if lt IE 8]>
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js" type="text/javascript"></script>
<![endif]-->

上面代码的意思是只在 IE 版本小于8的IE浏览器中包含 IE8.js 库。

<!--[if IE 6]>
<script src="DD_belatedPNG.js"></script>
<script>
  DD_belatedPNG.fix('.png');
</script>
<![endif]-->

上面代码的意思是修正 PNG 在 IE6浏览器中的 Bug。

条件注释语法表
条目 示例 说明
! [if !IE] 非(NOT)运算符。它直接位于特性(feature)、运算符(operator)或子表达式(subexpression)的前面来进行表达式的布尔转换。
lt [if lt IE 5.5] 小于(less-than)运算符。如果第一个实参小于第二个实参则返回为真(true)。
lte [if lte IE 6] 小于(less-than)或等于(equal)运算符。如果第一个实参小于或等于第二个实参则返回为真。
gt [if gt IE 5] 大于(greater-than)运算符。如果第一个实参大于第二个实参则返回为真。
gte [if gte IE 7] 大于(greater-than)或等于(equal)运算符。如果第一个实参大于或等于第二个实参则返回为真。
( ) [if !(IE 7)] 子表达式运算符。用于连接布尔运算符,以创建复合表达式。
& [if (gt IE 5)&(lt IE 7)] 与(AND)运算符。如果所有子表达式算出为真则返回为真。
| [if (IE 6) | (IE 7)] 或(OR)运算符。如果任一子表达式算出为真则返回为真。

当我们遇到 IE 的 Bug 后,可以用条件注释语法的完美方法来很快的解决问题。

有用的资源

祝你在用 IE 条件注释敲代码时编写得开心!

(完)

posted on 2010-02-04 14:48  豆豆の爸爸  阅读(421)  评论(0编辑  收藏  举报