IE中透明度的读写
2016-05-29 17:55
295 查看
一、获取透明度
返回元素所有滤镜的对象,可在此基础上获取opacity即可。
但是似乎ele.filters只能存储第一个滤镜,而当我们把alpha放在第二位时,就无法获取到了,下面是验证。
结果如下:
所以,我们尽量使用style.filter获取字符串操作吧!
二、设置透明度
设置透明度有点麻烦,我们需要解决以下三个问题:
用户传入值乘以100
IE6、7下,元素只有触发haslayout才能使透明度生效
IE8下,透明度设置为100会使文本模糊,需要清楚该滤镜
问题解决:
1.第一个问题,解决起来比较简单,代码如下
2.第二个问题,我们检测元素是否触发了haslayout,如果没有,将他的zoom属性设置为1
3.第三个问题,当存在多个滤镜的时候,我们只清掉透明部分
解决完了上述问题,我们就可以正式来设置啦!首先如果我们的opacity可以用node.filters获取到,我们就可以直接设置;如果不能,我们就只能用字符串的方法了。
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获取字符串操作吧!
二、设置透明度
设置透明度有点麻烦,我们需要解决以下三个问题:
用户传入值乘以100
IE6、7下,元素只有触发haslayout才能使透明度生效
IE8下,透明度设置为100会使文本模糊,需要清楚该滤镜
问题解决:
1.第一个问题,解决起来比较简单,代码如下
value=(value>0.999)?100:(value<0.001)?0:value*100
2.第二个问题,我们检测元素是否触发了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+")"; }
相关文章推荐
- 类型:.net;问题:ASP.NET路由;结果:ASP.NET 路由 .NET Framework 4
- Expert 诊断优化系列------------------冤枉磁盘了
- Hdu-5344 MZL's xor
- 单调栈/单调队列/RMQ
- VS2010使用c++、gSOAP调用WebService 图文教程
- Matrix67:漫话中文分词算法
- 对模拟登陆代码的理解
- 第二阶段个人总结5
- Oracle学习应用中的点点滴滴--自我记录长期更新
- 【DAY9】关于多线程的学习笔记
- property 中的strong 与weak
- 策略模式学习
- Problem3-总结报告
- 习题7-7 Egyptian Fractions (HARD version) 埃及分数 (IDA*)
- ACM 搜索 HDU 1728 搜索迷宫
- 蓝牙4.0BLE cc2540 cc2541 ios OAD教程(空中更新固件)[原创,多图]
- 第二次冲刺阶段站立会议(六)
- 第十三周学习进度
- Python2学习笔记(3)
- POJ1006 Biorhythms【中国剩余定理】