友情提示:尽量找到通用方法而减少对CSS Hack的使用,大规模使用CSS Hack会带来维护成本的提高以及浏览器版本变化而带来类似Hack失效等系列问题。
一.条件Hack
语法:
<!--[if <keywords>? IE <version>?]>
HTML代码块
<![endif]-->
HTML代码块
<![endif]-->
说明:
用于选择IE浏览器及IE的不同版本
if条件Hack是HTML级别的(包含但不仅是CSS的Hack,可以选择任何HTML代码块)
取值:
<keywords>if条件共包含6种选择方式:是否、大于、大于或等于、小于、小于或等于、非指定版本
- 是否:指定是否IE或IE某个版本。关键字:空
- 大于:选择大于指定版本的IE版本。关键字:gt(greater than)
- 大于或等于:选择大于或等于指定版本的IE版本。关键字:gte(greater than or equal)
- 小于:选择小于指定版本的IE版本。关键字:lt(less than)
- 小于或等于:选择小于或等于指定版本的IE版本。关键字:lte(less than or equal)
- 非指定版本:选择除指定版本外的所有IE版本。关键字:!
<version>目前的常用IE版本为6.0及以上,推荐酌情忽略低版本,把精力花在为使用高级浏览器的用户提供更好的体验上
IE10及以上版本已将条件注释特性移除,使用时需注意。
实例
-
如不想在非IE中看到某区域,可这样写:
<!--[if IE]> <p>你在非IE中将看不到我的身影</p> <![endif]-->
上述p代码块,将只在IE中可见。
- if条件6种选择方式的使用示例(下述代码中被条件注释包含的HTML代码块也可以是link标记):
-
是否,示例代码:
<!--[if IE]> <style> .test{color:red;} </style> <![endif]-->
在上述代码中,只有IE浏览,才能看到应用了test类的元素是红色文本。
-
大于,示例代码:
<!--[if gt IE 6]> <style> .test{color:red;} </style> <![endif]-->
在上述代码中,只有IE6以上,才能看到应用了test类的元素是红色文本。
-
大于或等于,示例代码:
<!--[if gte IE 6]> <style> .test{color:red;} </style> <![endif]-->
在上述代码中,只有IE6以上(含IE6),才能看到应用了test类的元素是红色文本。
-
小于,示例代码:
<!--[if lt IE 7]> <style> .test{color:red;} </style> <![endif]-->
在上述代码中,只有IE7以下,才能看到应用了test类的元素是红色文本。
-
小于或等于,示例代码:
<!--[if lte IE 7]> <style> .test{color:red;} </style> <![endif]-->
在上述代码中,只有IE7以下(含IE7),才能看到应用了test类的元素是红色文本。
-
非指定版本,示例代码:
<!--[if ! IE 7]> <style> .test{color:red;} </style> <![endif]-->
在上述代码中,除IE7以外的IE版本,都能看到应用了test类的元素是红色文本。
二.属性级Hack
语法:
selector{<hack>?property:value<hack>?;}
说明:
选择不同的浏览器及版本
*尽可能减少对CSS Hack的使用。Hack有风险,使用需谨慎
取值
_:选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线(_)更为合适。
*:选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高
9:选择IE6+
*:选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高
9:选择IE6+