[译]IE 条件注释
作者: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 条件注释敲代码时编写得开心!
(完)