一、获取透明度

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.   用户传入值乘以100
  2.   IE6、7下,元素只有触发haslayout才能使透明度生效
  3.   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+")";
}

IE中透明度的读写的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. C++中文件的读写

    C++中文件的读写 在C++中如何实现文件的读写? 一.ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstrea ...

  3. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  4. kernel中文件的读写操作可以使用vfs_read()和vfs_write

    需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...

  5. (六)kernel中文件的读写操作可以使用vfs_read()和vfs_write

    需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...

  6. VC 使用msxml6.dll动态链接库中的函数读写XML文件

    VC 使用msxml6.dll动态链接库中的函数读写XML文件 目录 1 引言 2 .dll使用方法 3 常用函数总结 4 实例应用 5 运行效果预览 6 补充说明 7 不足之处 8 更新   引言: ...

  7. 【python系统学习17】python中的文件读写

    python中的文件读写 文件读写,是Python代码调用电脑文件的主要功能,能被用于读取和写入文本.音频片段.Excel文档.邮件以及任何保存在电脑上的东西. 可使用python批量的操作本地文件, ...

  8. .Net MVC 网站中配置文件的读写

    网站中有很多需要设置的内容,像网站信息,注册设置,上传设置等.如果保存在数据库中需要单独建张表,表中只有一条记录,这样会让数据库很臃肿,而且频繁存取数据库的效率也是个问题.而保存在config文件里是 ...

  9. 在c#中IO流读写操作

    1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...

随机推荐

  1. AngularJS实战之ng-repeat的详细用法

    一.基本语法 {{$index}}:获取元素的下标. {{$first}}:判断当前元素是否是第一个元素,是则为true,否则:false: {{$last}}:判断当前元素是否是最后一个元素,是则为 ...

  2. VB6.0中WinSock控件属性和方法详解

    原文链接:http://liweibird.blog.51cto.com/631764/653134 WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器 ...

  3. Arcgis Server Manager发布ArcGISTiledMapServiceLayer服务

    用ArcgisServer manager发布一个ArcGISDynamicMapServiceLayer服务: Add New Service->填写name,type 选择Map servi ...

  4. WEB版一次选择多个文件进行批量上传(swfupload)的解决方案

    说明:功能完全支持ie和firefox浏览器! 一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的添加到页面,无法如windo ...

  5. spring 事务的传播特性

    1.声明式事物中,一个类serviceA的方法test1()调用另一个类serviceB的方法test2() 要是serviceB的test2()事务配置在xml文件中为REQUIRED,又在此方法上 ...

  6. leetcode-[3]Max Points on a Line

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line 思 ...

  7. (转)设置VMWARE通过桥接方式使用主机无线网卡上网

    转自:http://www.cnblogs.com/liongis/p/3265458.html 环境:WIN7旗舰版,台式机,U盘无线上网卡. 虚拟软件:VMware9.0,虚拟系统:CentOS6 ...

  8. mysql查询 根据年月日的查询

    select * from call_loan_info where DATE_FORMAT(create_time,'%Y-%m-%d') = '2017-06-16'

  9. Java理论学时第六节。课后作业。

    package Fuction; class Grandparent { public Grandparent() { System.out.println("GrandParent Cre ...

  10. ubuntu下mysql远程连接

    第一步: vim /etc/mysql/my.cnf找到bind-address = 127.0.0.1 注释掉这行,如:#bind-address = 127.0.0.1               ...