当前位置: 首页 > 知识 >正文

兼容性问题怎么解决(内存兼容性问题怎么解决)

之前找了几个可以独立运行的不同版本的IE浏览器,就是为了试试页面的兼容性。试了才知道,IE6和FF还好的页面在IE5和IE5.5就一塌糊涂了,一直听说IE5是WEB标准做的钉子户。

我现在不得不相信了。

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

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

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

E1{

Background color: red! Important; /* Increase the priority */

background-color: blue;

}

但是,在IE中这样写会有问题。看了我的《关于CSS样式表优先级》和《关于CSS样式表优先级补遗》就知道是IE6和FF用的!重要声明可以提高优先级,

但是在IE6!重要声明不是绝对的,它将被后面的同名属性定义所取代。也就是说,在上面的例子中,IE6应用了最后一个背景色的值,即“蓝色”;在FF中,背景颜色的值是“红色”。

据此,我们可以区分FF和IE的风格。

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

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

E1{

background-color: red;

> background color: blue;

}

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

这一点很重要!后面大家就知道了。(注:我测试过一些其他符号,比如“~”、“`”和“<”,只有IE能识别,所以推荐用“>”来感谢嘟嘟。)

让我们看另一个例子:

E1{

>/* IE only */Background color: black;

>/*仅IE */背景色/* IE 5.5 */:绿色;

}

这个例子在IE6中有黑色背景;以及IE5.5中获得的绿色背景;IE5中也获得了黑色背景。这说明第二句的定义只有IE5.5才能识别,这是很早就发表的HACK,网上也能查到相关资料。

请注意,属性名后面有一个空格。至此,我们已经把FF,IE5.5,IE6分开了。IE5呢?其实现在我们只需要把IE5和IE6分开就可以了。让我们来看看这个例子:

E1{

>/* IE only */Background color: red; /*IE5*/

}

E1/*IE5.5+*/{

>/* IE only */Background color: black;

}

这里我们用另一个HACK,就是“E1/**/{}”,这个定义只有IE5以上的版本才能识别。这个例子的结果是IE5中的背景色是红色;在IE5及以上版本中,你会看到黑色背景。

终于把不同版本的浏览器都分离出来了,这样我们就可以为不同的浏览器定义不同的样式了。来看个完整的例子:

E1{

width: 500px;

height: 50px;

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

background-color: blue;/*IE5*/

text-align:center;

}

E1/*IE5.5+*/{

/*IE only*/background-color: black;/*IE6*/

/*IE only*/background-color /*IE5.5*/: green;

}

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

因为“E1/**/{}”这个HACK在FF中可以识别。也许你会想,上面的例子不是可以写成:

E1{

width: 500px;

height: 50px;

background-color: red;/*FF*/

background-color: blue;/*IE5*/

text-align:center;

}

E1/*IE5.5+*/{

/*IE only*/background-color: black;/*IE6*/

/*IE only*/background-color /*IE5.5*/: green;

}

这样不就又可以省下几个字节?是没错,可是HACK不是标准,如果滥用HACK,那只会离标准越来越远!

相关文章:
  • 7月5日基金净值:南方成份精选混合A最新净值0.6386,跌1.02%
  • 4月24日基金净值:景顺长城中证500指数增强A最新净值1.3875,跌0.98%
  • 7月11日基金净值:华安制造升级一年持有混合A最新净值0.7268,涨1.45%
  • 3月28日基金净值:易方达安盈回报混合A最新净值2.179,跌0.23%_基金频道_证券之星
  • 5月8日基金净值:汇添富科技创新混合A最新净值2.0457,涨0.88%
  • 6月27日基金净值:汇添富开放优势6个月持有期股票A最新净值0.6735,涨0.84%
  • 5月23日基金净值:信澳智远三年持有期混合A最新净值0.7784,跌0.84%
  • 4月19日基金净值:平安双季增享6个月持有债券A最新净值0.9637,跌0.08%
  • 【机构调研记录】华泰柏瑞基金调研南网能源、建投能源等5只个股(附名单)
  • 6月26日基金净值:易方达信息产业混合最新净值2.625,跌4.02%