透明-----css的filter,opacity與css3的background-color: rgba

 先從問題出發:

現象:

今天在項目中發現一個在IE9下的bug,現象是IE9下背景爲不透明,而在IE8,IE10以及firefox,chrome下都是正常的,如下圖:

   

IE9的效果,背景爲純白色,


IE8,IE10,firefox,chrome的透明效果

調查過程:

1.查看代碼:

css中對li標籤設置的是

filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr=#BF494949,endColorstr=#BF494949);background-color:rgba(0, 0, 0, 0.3)

2.補習一下代碼中相關知識

(只有真正瞭解了原代碼,才能在針對原代碼做自如的修改)

filter:progid:DXImageTransform.Microsoft.gradient(enabled=bEnabled,startColorStr= ,endColorStr= )


屬性:
enabled:可選項。布爾值(Boolean)。設置或檢索濾鏡是否激活。 true | false
  true: 默認值。濾鏡激活。
  false:濾鏡被禁止。

startColorStr:可選項。字符串(String)。設置或檢索色彩漸變的開始顏色和透明度。

  • 格式爲 #AARRGGBB 。 AA 、 RR 、 GG 、 BB 爲十六進制正整數。
  •  取值範圍爲 00 - FF 。 RR 指定紅色值, GG 指定綠色值, BB 指定藍色值,AA 指定透明度。 00 是完全透明。 FF 是完全不透明。超出取值範圍的值將被恢復爲默認值。 取值範圍爲 #FF000000 - #FFFFFFFF 。默認值爲 #FF0000FF 。不透明藍色。

EndColorStr:可選項。字符串(String)。設置或檢索色彩漸變的結束顏色和透明度。參閱 startColorStr 屬性。默認值爲 #FF000000 。不透明黑色。

目前IE6-IE9都支持,包括IE9


background-color:rgba(0, 0, 0, 0.3)

這是css3的一個樣式,

語法:

R:紅色值。正整數 | 百分數

G:綠色值。正整數 | 百分數

B:藍色值。正整數| 百分數

A:透明度。取值0~1之間

目前IE9以及IE9以上,firefox,chrome都支持。

可以參照給文章http://www.w3cplus.com/content/css3-rgba,比較詳細。

3.問題找到了

由上面兩個知識中發現,IE9是同時支持的,這就是說爲什麼IE8和IE10都正常,然後打開F12查看

而IE8和IE10分別支持其中一個。

接着在F12中將filter的樣式去掉,發現效果是OK的;將filter勾選,然後將background-color去掉,發現透明效果不是很好,可見IE9對其支持度還不夠。

接下來就是如何修改了。


  • 在html中常用的是條件註釋,如:

<!--[if IE 9.0]>

  • 在js中又採用版本判斷

if(navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.split(";")[1].replace(/[ ]/g,"") == "MSIE9.0") 

  • 但現在是在css文件中去判斷,思前想後用hack判斷吧,因爲IE9支持@media all所以採用以下的方式

@media all and (min-width:0) {

li{filter:progid:DXImageTransform.Microsoft.gradient(enabled='false',startColorstr=#BF494949,endColorstr}

將enabled改爲false即可,這樣在IE9就可以,而IE9以上及firefox,chrome因爲不識別filter:progid,所以不做處理,從而達到兼容性。

4.額外透明的方法

  • opacity:取值範圍是0-1,1代表不透明,如opacity(1);

問題:會造成不單該元素自身背景透明瞭,它的子元素會繼承opacity屬性,也會透明.

  • png-8的透明圖片

問題:採用透明圖片可以實現,但IE6下會有問題,同時圖片相對js代碼以及css來說,所需要的網絡請求大,會影響頁面的速度

5.調查該問題參考的文章:

http://www.w3cplus.com/content/css3-rgba

http://www.cnblogs.com/mizzle/archive/2012/04/05/2432752.html

http://www.footya.com/?action=show&id=114

http://angeldhp.iteye.com/blog/146612




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章