(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
掌握 CSS Hacks 可以说是前端开发工程师的一个基本技能。随着浏览器版本的遍地开花,我们寻找着尽可能使各种浏览器表现一致的 CSS 写法。当然 CSS Hacks 是最为流行的解决方案。但对于 IE 而言,目前已经有 IE6/IE7/IE8 三个主要版本,不久的将来还会有 IE9 的到来。于此,IE 是个杯具。
当然有很多人歇斯底里地诋毁 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 ;}
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 模式
你也可能会碰到另一种情况:
(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)meta http-equiv="X-UA-Compatible" content="IE=Edge"//标准 IE 模式
IE8 在没有申明 IE=Edge 的情况下还是会存在以兼容模式渲染的情况,这种设置方案 (IE=Edge) 目前正在应用。
关于 IE=Edge 详细参考: