日期:2013-12-20  浏览次数:21115 次

网页制造aiyiweb文章简介:当然有很多人歇斯底里地诋毁 IE6,在此想说的是,一切诋毁 IE6 的言论都是纸老虎。看看 IE6 的历史,它绝不是一个错误的存在。IE7/IE8 这些有严重后遗症的版本才是导致一切杯具的罪魁祸首。下面是各个 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 不支持同一选择符中的 !important

IE7:

+selector{property:value;}

IE8:

selector{property:value\0;}

IE6 & IE7:

*selector{property:value;}

IE6 & IE7 & IE8:

selector{property:value\9;}

可悲的是,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