根據caniuse(http://caniuse.com/#search=rgba),rgba相容性為IE9以及以上瀏覽器。
執行個體代碼:
<!doctype html><html> <head> <meta charset="UTF-8" /> <title>rgba 相容性處理</title> <style type="text/css"> * { margin: 0; padding: 0; } .parent { width: 400px; height: 400px; margin: 100px; font-size: 20px; color: #FF0000; border: 1px solid red; background-color: rgba(0, 0, 0, 0.5); } </style> </head> <body> <div> rgba </div> </body></html>
chrome瀏覽器效果:
IE8瀏覽器效果(無背景):
rgba相容性處理:
.parent { width: 400px; height: 400px; margin: 100px; font-size: 20px; color: #FF0000; border: 1px solid red; background: rgba(0, 0, 0, 0.5); /*下一句關鍵設定*/ filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7f000000, endcolorstr=#7f000000); }
設定filter屬性目的是上一行的透明度不起作用的時候執行,filter: progid:DXImageTransform.Microsoft.gradient是用來做漸層的,但是這個地方不需要漸層,所以兩個顏色都設定成了相同的顏色。
這個顏色“#7f000000”是由兩部分組成的。
第一部是#號後面的7f 。是rgba透明度0.5的IEfilter值。從0.1到0.9每個數字對應一個IEfilter值。對應關係如下:
即:alpha*255得到的值再轉換為16進位即可。
第二部分是7f後面的六位 是六進位的顏色值,跟rgb函數中的取值相同,比如rgb(255,255,255)對應#ffffff。
總結:至此完成IE8以及以下IE瀏覽器RGBA相容性處理。