IE中透明度的读写
一、獲取透明度
ele.filters.alpha返回元素所有濾鏡的對(duì)象,可在此基礎(chǔ)上獲取opacity即可。
但是似乎ele.filters只能存儲(chǔ)第一個(gè)濾鏡,而當(dāng)我們把a(bǔ)lpha放在第二位時(shí),就無(wú)法獲取到了,下面是驗(yàn)證。
#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);結(jié)果如下:
所以,我們盡量使用style.filter獲取字符串操作吧!
?
二、設(shè)置透明度
設(shè)置透明度有點(diǎn)麻煩,我們需要解決以下三個(gè)問(wèn)題:
問(wèn)題解決:
1.第一個(gè)問(wèn)題,解決起來(lái)比較簡(jiǎn)單,代碼如下
value=(value>0.999)?100:(value<0.001)?0:value*1002.第二個(gè)問(wèn)題,我們檢測(cè)元素是否觸發(fā)了haslayout,如果沒(méi)有,將他的zoom屬性設(shè)置為1
3.第三個(gè)問(wèn)題,當(dāng)存在多個(gè)濾鏡的時(shí)候,我們只清掉透明部分
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; })解決完了上述問(wèn)題,我們就可以正式來(lái)設(shè)置啦!首先如果我們的opacity可以用node.filters獲取到,我們就可以直接設(shè)置;如果不能,我們就只能用字符串的方法了。
var alpha=ele.filters.alpha||ele.filters[salpha];//ele.filters[salpha]為了照顧其他兩種很長(zhǎng)的設(shè)置透明濾鏡的方法,這里就懶得寫(xiě)了if(alpha){alpha.opacity=value;}else{el.style.filter=(el.style.filter?el.style.filter+",":"")+"alpha(opacity="+value+")";}?
轉(zhuǎn)載于:https://www.cnblogs.com/shytong/p/5539945.html
總結(jié)
- 上一篇: 放肆地使用UIBezierPath和CA
- 下一篇: freemodbus线圈中的位操作