IE8和IE9使用filter实现渐变背景时的颜色问题

linear-gradient最低只支持IE10,所以要兼容IE8和IE9的话只能使用filter替代。代码如下:

filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#1471da,endColorstr=#1C85FB);/*IE<9>*/
-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#1471da, endColorstr=#1C85FB)";/*IE8+*/

但是这里有一个大坑,我踩了半天才发现原因。使用这种方式时,颜色不能用#fff这样的简写!!我们来看看#fff和#ffffff的区别:

filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#fff, endColorStr=#dfe0e2);

fff效果如下图:

filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#ffffff, endColorStr=#dfe0e2);

ffffff效果如下图:
这里写图片描述

以下是相关资料的解释。

startColorStr和endColorStr并不是简单的代表颜色,它们的格式应该是 #AARRGGBB 。 AA, RR, GG, BB 为十六进制正整数。取值范围为 00 - FF 。 RR 指定红色值, GG 指定绿色值, BB 指定蓝色值,参阅 #RRGGBB颜色单位。 AA 指定透明度。 00 是完全透明。 FF 是完全不透明。超出取值范围的值将被恢复为默认值。取值范围为#FF000000 - #FFFFFFFF 。
startColorStr默认值为 #FF0000FF 。不透明蓝色。
endColorStr默认值为 #FF000000 。不透明黑色。

由于简写不符合它们的语法,所以startColorStr和 endColorStr都取了默认值 蓝色和黑色,也就出现了图1的效果。

猜你喜欢

转载自blog.csdn.net/shengandshu/article/details/73920765
今日推荐