奇宝库 > 设置ie浏览器兼容性(由于您使用的不是IE5.5或更高版本的浏览器)

设置ie浏览器兼容性(由于您使用的不是IE5.5或更高版本的浏览器)

我之前找了几个不同版本的可以独立运行的IE浏览器,就是为了试试页面的兼容性。不知道有没有试过,IE6和FF没问题的页面在IE5和IE5.5就一塌糊涂了,一直听说IE5是WEB标准做的“钉子户”,现在不得不相信了。

既然有问题,那就想办法解决吧。网上搜了一下,相关文章还是很多的。我觉得最直接的方法是“IE条件注释”,针对不同版本的IE编写样式非常方便。但是你要为每个版本写一个样式,不利于文件优化。

找到一些相关的CSS HACK后,我觉得应该可以把IE5/IE5.5/IE6/FF的HACK一起写。经过试验,我终于找到了一个好方法。让我们看看如何实现它:

大家都知道怎么用!重要声明可以提升指定样式规则的应用优先级,如下例所示:

E1{

背景色:红色!重要;/*提高优先级*/

背景色:蓝色;

}

但是在IE中这样写会有一个问题。看完我的《关于CSS样式表优先级》和《关于CSS样式表优先级补遗》你就知道在IE6和FF怎么用了!重要语句可以提高优先级,但是在IE6!重要声明不是绝对的,它将被以下同名的属性定义替换。也就是说,在上面的例子中,IE6应用了最后一个背景色的值,即“蓝色”;而FF中背景色的值是“红色”。据此,我们可以区分FF和IE的风格。

好了,解决了FF和IE的问题。现在我们来解决IE自身的问题。

看了嘟嘟的《绕过IE6支持IE5的别一种写法-IE也支持"gt;"》,感觉到了。用“>”IE真的能认出来吗?让我们举个例子:

E1{

背景色:红色;

>背景色:蓝色;

}

在FF中,背景色是红色,而在IE中,背景色是蓝色。根据样式重定义的规则,如果浏览器能识别“>”,就应该得到蓝色背景,所以要知道“>”只能被IE识别,这一点很重要!以后大家就知道了。(注:我测试过一些其他符号,比如“~”、“`”、“<”等。只有IE才能识别。在这里,我推荐用“>”来感谢嘟嘟)

我们再举一个例子:

E1{

>/*仅IE */背景色:黑色;

>/*仅IE */background-color/* IE 5.5 */:绿色;

}

这个例子在IE6中有黑色背景;以及IE5.5中获得的绿色背景;它在IE5中也获得了黑色背景。这说明第二句的定义只有IE5.5才能识别,这是很早以前发表的一个HACK,网上可以查到相关资料。需要注意的是,属性名后面有一个空格。到目前为止,我们已经分离了FF,IE5.5和IE6。IE5呢?其实现在我们只需要把IE5和IE6分开。让我们来看看这个例子:

E1{

>/*仅IE */背景色:红色;/*IE5*/

}

E1/*IE5.5 */{

>/*仅IE */背景色:黑色;

}

这里我们使用另一种黑客技术,即“E1/**/{}”。这个定义只有IE5以上的版本才能识别。这个例子的结果是IE5中的背景色是红色;IE5及以上版本得到的是黑色背景。

最后,不同版本的浏览器是分开的,这样我们就可以为不同的浏览器定义不同的风格。举一个完整的例子:

E1{

宽度:500px

高度:50px

背景色:红色!重要;/*FF*/

背景色:蓝色;/*IE5*/

文本对齐:居中;

}

E1/*IE5.5 */{

>/*仅IE */背景色:黑色;/*IE6*/

>/*仅IE */background-color/* IE 5.5 */:绿色;

}

注意,上例中“背景色”的定义不能平滑更改,即FF-IE5-IE6-IE5.5,IE的定义前面要加“>”,因为FF中可以识别“E1/**/{}”的HACK。你可能认为上面的例子不能写成:

E1{

宽度:500px

高度:50px

背景色:红色;/*FF*/

>背景色:蓝色;/*IE5*/

文本对齐:居中;

}

E1/*IE5.5 */{

>/*仅IE */背景色:黑色;/*IE6*/

>/*仅IE */background-color/* IE 5.5 */:绿色;

}

不多省几个字节吗?可以,但是HACK不是标准。如果HACK被滥用,只会离标准越来越远!

本文来自网络,不代表本站立场,转载请注明出处: