欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浏览器兼容解决FF/IE6/IE7背景专用CSS HACK

程序员文章站 2023-10-13 18:08:24
自从互联网开始的那一刻起,各浏览器间的争斗就没有停止过。当然其中最苦的就是网页制作人员了,为了达到用户体验以及可用性的标准,不得不在多个浏览器上为统一效果而奔波。真希望哪一...
自从互联网开始的那一刻起,各浏览器间的争斗就没有停止过。当然其中最苦的就是网页制作人员了,为了达到用户体验以及可用性的标准,不得不在多个浏览器上为统一效果而奔波。真希望哪一天ff可以一统天下,虽然现在还是ie的大天下。特别是微软最新发布的ie7浏览器,其css的兼容性确实给一些网页制作人员又添加了一个沉重的新负担。
为了让各浏览器有同样的显示效果,我们不得不用到css hack。当然在这篇文章中我们只谈现在使用率最高的ie6和ff,以及将来可能会成为主流的ie7的css hack,至于ie6以下版本已op、sf在这此先不详细说明。新手看了这片文章一定会有所收获,而高手们路过一下就可以了,呵呵!

方案一
先来看看下面的css代码:

background-color:orange; 
*background-color:blue!important; 
*background-color:red;

[ctrl+a 全选 注:如需引入外部js需刷新才能执行]

下面我简单解释一下各浏览器怎样理解这三个属性:
在ff下,第2、3个属性不认识,其中第2个属性如果只是加了!important的话ff一定认识的,但因为前面又加了个*,所以不认识了(仅ie7认识)。所以它读的是background-color:orange;
在ie7下,第1、2、3个属性ie7虽然都认识,但!important表示的是优先,所以它读的是*background-color:blue!important;
在ie6下,第2个属性不认识,第1、3个属性都认识,但因为第3个属性覆盖掉第1个属性,所以ie6最终读取的*background-color:red。

方案二
先来看看下面的css代码:
复制代码 代码如下:

background-color:orange;   
*background-color:blue;   
_background-color:red; 


[ctrl+a 全选 注:如需引入外部js需刷新才能执行]

下面我简单解释一下各浏览器怎样理解这三个属性:
在ff下,第2、3个属性ff不认识,所以它读的是background-color:orange;
在ie7下,第3个属性ie7不认识,所以它读第1、2个属性,又因为第2个属性覆盖了第1个属性,所以ie7最终读出的是第2个属性*background-color:blue;
在ie6下,这3个属性ie6都认识,所以3个属性都可以读取,又因为第3个属性覆盖掉前2个属性,所以ie6最终读取的是_background-color:red。

其中ie的读取属性一定要知道,这对初学者而言使用css hack是非常至关重要的,浏览器读取属性是从上至下的,也就是说同样属性的设置最后一个读取到的才是在浏览器上显示的。此外在方案二种的“_”这是只有ie6才认识的,可见其大胃王的感觉。另外!important不同,它打破了从上至下的读取习惯,使用的是优先显示。而在上述两个方案中可以看出ff除了正规css书写和!important外其它都不认识,标准就是统一的。

在这里并不是怂恿大家鼓励使用css hack,只是别看到其他人写的css代码中有这些hack不知道是什么意思。毕竟用css hack来解决浏览器间的兼容并不是长远方法,如果新版本浏览器的出现说不定会把你原来写的css hack怎样,ie7就是个很好的例子。尽量达到零使用css hack或者说少使用,因为好的布局结构是可以很好解决这些问题,这样的网站也大有人在。