关于IE8 CSS Hack
字数 895 字 阅读时长 ≈ 3 分钟
这次的一个项目中,在一开始承诺了客户会处理掉IE8以上IE浏览器的问题,于是走上了不归路……
这次的问题主要有两个:
1、中部产品展示图片在IE8中不显示;
2、新闻Accordion内容错位。
其实这两个问题都很好解决:
1、随便google一下,就知道是 max-width:100% 造成的,改成 max-width:none 即可;
2、在不同的分辨率下(使用@media),写入分别适应不同的css样式即可。
既然说起来这么简单,为嘛我还要说是不归路呢?不就是因为要针对IE8的唯一CSS Hack么……不能影响其它浏览器……
算起来,我总共绕了三圈:
1、尝试在css里直接hack,这样的话,基本不会增加加载量,也不会影响运行效率。度娘谷哥了一下,的确有效的有这些:
1 | div { |
注意写csshack的顺序,其中:
1.background-color:red\0;
IE8和IE9都支持;
2.background-color:blue9\0;
仅IE9支持;
(1)区别FF(IE8)与IE6 IE7
backgorund:orange;
FF和IE8背景色将为橘黄色
*backgorund:red;
IE6和IE7背景色将为红色
(2)区别FF(IE8)与IE6与IE7
background:orange;
FF和IE8背景色将为橘黄色
*background:red !important;
IE7背景色将为红色
*background:blue;
IE6背景色将为蓝色
(3)区别FF(IE8)与IE6与IE7
background:orange;
FF和IE8背景色将为橘黄色
*background:red;
IE7背景色将为红色
_background:blue;
IE6背景色将为蓝色
(4)区别FF与IE6 IE7 IE8 IE9
color:gray;
FF等非IE浏览器字体色将为灰色
color:red9;
IE8 IE9字体色将为红色
*color:green;
IE7字体色将为绿色
_color:blue;
IE6字体色将为蓝色
但是为什么我最终放弃了呢?因为这个在比较简洁清晰的css里还比较好。但是这个项目运用了框架和各种js,css被修改的几率大大增加,导致追踪问题的复杂程度也加大。
说简单点,其直接后果就是IE8的问题解决了,同时又带来了IE9、10、11的问题,分别hack的时候,发现还有更多问题要解决。
记得以前余叔说过,如果一个解决办法在解决这个问题的同时还会带来新的问题,那这就不叫解决办法。
2、直接用JS写CSS样式,这样相比前一个方式会增加加载量和渲染时间,但是只要能解决就好。
这样的话,主要是使用的方法来判断浏览器类型,然后执行jQuery的CSS方法。
比如这样:
1 | <!--[if IE 8]> |
这个方法为什么也被抛弃了呢?说来也怪,明明跟之前CSS一样,但是居然不起作用。第一个方法折腾了太久,这个方法就懒得debug了,直接用最简单粗暴的方法解决好了。
3、最后用了最笨的方式,也是最耗费加载时间和效率的方式,但是也是最安全最不影响其它部分的方式。即是使用的方法来判断浏览器类型,来加载css文件,而这个css文件里只写入针对IE8的样式修正。
1 | <!--[if IE 8]> |
好了,一切问题都解决了。
♦ 本文固定连接:https://www.gsgundam.com/archive/2014-06-30-ie8-css-hack/
♦ 转载请注明:GSGundam 2014年06月30日发布于 GSGUNDAM砍柴工
♦ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
♦ 原创不易,如果页面上有适合你的广告,不妨点击一下看看,支持作者。(广告来源:Google Adsense)
♦ 本文总阅读量次