下面是各个 IE 版本的 CSS Hacks 写法.
掌握 CSS Hacks 可以说是前端开发工程师的一个基本技能。随着浏览器版本的遍地开花,我们寻找着尽可能使各种浏览器表现一致的 CSS 写法。当然 CSS Hacks 是最为流行的解决方案。但对于 IE 而言,目前已经有 IE6/IE7/IE8 三个主要版本,不久的将来还会有 IE9 的到来。于此,IE 是个杯具。
当然有很多人歇斯底里地诋毁 IE6,在此想说的是,一切诋毁 IE6 的言论都是纸老虎。看看 IE6 的历史,它绝不是一个错误的存在。IE7/IE8 这些有严重后遗症的版本才是导致一切杯具的罪魁祸首。下面是各个 IE 版本的 CSS Hacks 写法:
IE6:
_selector{property:value;}
selector{property:value;property:value!important;} //IE6 不支持同一选择符中的 !importantIE7:
+selector{property:value;}IE8:
selector{property:value;}IE6 & IE7:
*selector{property:value;}IE6 & IE7 & IE8:
selector{property:value9;}
可悲的是,IE8 会自作主张的将页面按照 IE7 模式进行渲染。目前针对 IE 多版本兼容的现状,通常会采用设置 X-UA-Compatible HTTP 头的方式开启 IE8 的兼容模式,这样能在一定程度上减少调试 IE 的工作量。代码如下:
<meta http-equiv="X-UA-Compatible" content="IE=7"> //标准 IE7 模式
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> //兼容 IE7 模式
你也可能会碰到另一种情况:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">//标准 IE 模式IE8 在没有申明 IE=Edge 的情况下还是会存在以兼容模式渲染的情况,这种设置方案 (IE=Edge) 目前口碑网正在应用。
关于 IE=Edge 详细参考:http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2008-January/013635.html