打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
回答读者提问(19)——再谈浏览器的兼容性 - CSS,Javascript,jQuery...

回答读者提问(19)——再谈浏览器的兼容性

关于浏览器的兼容性问题,我写过一篇小文章,《回答读者提问(12)——关于CSS在不同浏览器的调试经验》。今天在就这个问题,谈一些制作中的技巧。

首先,关于CSS hack的方法网上有很多介绍,种类繁多,初学者常常感到很困惑。这类的CSS hack的方法,有的是针对某一个非常特殊的情况的方法,有的则是相对于比较通用的一些方法。

对于后者我们在平常的学习工作中,可以多留心收集一些,前者则不需要太关注,只是遇到的时候到网上搜索一下,寻找解决方法即可。

这里举一个比较通用的hack方法,比如对于CSS中的某一个属性,我们希望针对不同的浏览器,设置不同的值。例如,某一个div,我们希望在Firefox中宽度为50像素,在IE中宽度为60像素。那么怎么实现呢?请看如下代码:

1            2            3            4            
#demo div{            width:50px;    /* FireFox 有效 */            +width:60px;    /* IE 有效 */            }

在上面的代码中, 第2行的width:50px这是普通的样式,下一行中,在width属性前面加一个加号,这条样式在Firefox中被认为无效,但是在IE中这个加号会被忽略掉,因此仍然被理解为width属性,从而覆盖上一条的设置,这样就可以区分Firefox浏览器和IE浏览器了。

那么如果希望进一步区分IE 6和IE 7呢?请看如下代码:

1            2            3            4            5            
#demo div{            width:50px;    /* FireFox 有效 */            +width:60px;    /* IE 7 有效 */            _width:70px;    /* IE 6 有效 */            }

上面代码就可以实现对三种浏览器的区分了。在IE7中,属性前加一个加号,这个加号会被忽略,而如果在属性前加一个下划线这整条样式会被忽略,从而实现了对这三种主流浏览器的区分。

到这里,我们自然会想到,什么情况下会用的这种方法来区分浏览器呢?我们要制作的页面,通常会有两种情况,一种是彻底从头开始做,另一种是基于一个已经存在的网页进行修改或者修补。

对于第一种情况来说,我们对网页的每一个细节都十分清楚,因此并不经常遇到非常Firefox和IE的兼容性问题,即使遇到了,一般也可以找到其他方法解决。而对于第二种情况来说,则复杂的多了,因为一个网页可能非常复杂,层叠关系也很复杂,对于后接手的人,很难搞清楚某一个的属性上面有多少层设置会对他产生影响,因此往往只能采用“贴膏药”的方式进行修补。

比如说,如下的一个页面的最终效果,在制作圆角框的时候,在IE中,圆角对整齐之后,在firefox中却出现如图所示的错位,而如果按照Firefox调整好,在IE中又会出现错位。

 

而页面的内容层层嵌套,在并不知道细节的情况下,很难找到问题的根源。因此这里使用修补的方法就很方便(尽管不是最优雅完善的方法),例如对于控制圆角图像位置的属性使用上面的方法,分别控制即可。

总上所述,对任何属性都可以使用加号或者下划线方法,来实现针对不同浏览器的各自设置。当然,最后还是要指出,任何hack方法都要慎重使用,最好还是能够按照标准、优雅的CSS来进行设计,这样的代码可读性、维护性都要好很多,也是我们追求的目标。

5,959
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何让DIV固定在页面的某个位置
IE 7,IE6,mozilla 浏览器的一些兼容问题
转收集ie7、ie6、firefox多浏览器css兼容收藏
收藏一个CSS书写顺序建议及CSS HACK(FF&IE兼容)
ie6 ie7 FF 兼容
认识hasLayout —— IE浏览器CSS BUG的一大祸首!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服