IE中透明度的读写
一、獲取透明度
ele.filters.alpha返回元素所有濾鏡的對象,可在此基礎上獲取opacity即可。
但是似乎ele.filters只能存儲第一個濾鏡,而當我們把alpha放在第二位時,就無法獲取到了,下面是驗證。
#q{font-size:20px;float:left;filter:alpha(opacity=50),DropShadow(Color=black, OffX=10px, OffY=10px, Positive=positive); }console.dir(q.currentStyle.filter); console.dir(q.filters);結果如下:
所以,我們盡量使用style.filter獲取字符串操作吧!
?
二、設置透明度
設置透明度有點麻煩,我們需要解決以下三個問題:
問題解決:
1.第一個問題,解決起來比較簡單,代碼如下
value=(value>0.999)?100:(value<0.001)?0:value*1002.第二個問題,我們檢測元素是否觸發了haslayout,如果沒有,將他的zoom屬性設置為1
3.第三個問題,當存在多個濾鏡的時候,我們只清掉透明部分
var rfilters=/[\w:\.]+\([^)]+]\)/g;var filter=ele.currentStyle.filter||ele.style.filter||"";value=style.filter=filter.replace(rfilters,function(a){return /alpha/i.test(a)?"":a; })解決完了上述問題,我們就可以正式來設置啦!首先如果我們的opacity可以用node.filters獲取到,我們就可以直接設置;如果不能,我們就只能用字符串的方法了。
var alpha=ele.filters.alpha||ele.filters[salpha];//ele.filters[salpha]為了照顧其他兩種很長的設置透明濾鏡的方法,這里就懶得寫了if(alpha){alpha.opacity=value;}else{el.style.filter=(el.style.filter?el.style.filter+",":"")+"alpha(opacity="+value+")";}?
轉載于:https://www.cnblogs.com/shytong/p/5539945.html
總結
- 上一篇: 放肆地使用UIBezierPath和CA
- 下一篇: freemodbus线圈中的位操作