Firefox,IE5,IE6,IE5.5等浏览器兼容性解决方法 .

找了一些相关的CSSHACK后,总结的几个方法。

<来源:http://blog.csdn.net/bkq421511585/article/details/7197893>

1.区别FF和IE

1-1

首先,当然是!important大法,可以提升指定样式规则的应用优先权,如下面的例子:

插入代码:

div{

background-color:red!important;

background-color:blue;

}

因为!important声明在IE6中并不是绝对的,它会被之后的同名属性定义所替换。也就是说在上面的例子中,IE6所应用的是最后一个背景色的值,即“blue”;

而在FF中背景色的值为“red”。

1-2

还有一种方法,就是IE浏览器可以识别“>”等一些符号,如“~”、“`”、“<”等,都只有IE可以识别,但是不合理,!important是符合标准的。所以

插入代码:

div{

background-color:red;

>background-color:blue;

}

在FF中得到的是背景色红色,而在IE中得到的背景色是蓝色,根据样式重定义的规则,如果浏览器可以识别“>”,则应该得到的蓝色的背景,因此可以知道“>”只有IE可以识别。

这样,我们就可以把FF和IE的样式分离开。下面就是解决IE自己的问题了。

2.区别IE5.5和IE的其他版本

看一个例子:

插入代码:

div{

>background-color:black;

>background-color/*IE5.5*/:green;

}

这个例子使用了“>”,只有IE可以识别,在IE6中得到了黑色的背景;而在IE5.5中得到的绿色的背景;

在IE5中也得到了黑色的背景。这就说明了第二句定义只有IE5.5能识别,这是个很早就公布的HACK,可以在网上找到相关的资料,要注意的就是在属性名之后是有一个空格的。

到此我们已经把FF、IE5.5、IE6分离出来了,那IE5呢?其实现在我们只要把IE5跟IE6分开就OK了。

3.区别IE5与IE5.5+

插入代码:

div{

>background-color:red;

}

div/*IE5.5+*/{

>background-color:black;

}

这里我们又用到一个HACK,就是“div/**/{}”,这个定义在IE5以上的版本才能识别出来。

这个例子得到的结果是,在IE5中的背景色为红色;在IE5以上版本中得到的是黑色背景。

4.完整的Hack

这样我们就可以为不同的浏览器定义不同的样式了。来看个完整的例子:

插入代码:

div{

width:500px;

height:50px;

background-color:red!important;/*FF*/

background-color:blue;/*IE5*/

text-align:center;

}

div/*IE5.5+*/{

>/*IEonly*/background-color:black;/*IE6*/

>/*IEonly*/background-color/*IE5.5*/:green;

}

需要注意的是,在上面例子中“background-color”定义的顺利不能改变,即FF-IE5-IE6-IE5.5。

对于IE的定义在属性前要加“>”,因为“div/**/{}”这个HACK在FF中可以识别。

相关推荐