1. 程式人生 > >IE8和IE9使用filter實現漸變背景時的顏色問題

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的效果。