IE在处理透明度上真够恶心,而且在IE7必须让元素的hasLayout为ture,要不会失效。以下是我最新处理透明度的代码:
var getIEOpacity = function(el){ var op = 1; //这是最快的获取IE透明值的方式,不用正则来处理字符串了! if(el.filters.alpha){ op = el.filters.alpha.opacity; }else if(el.filters["DXImageTransform.Microsoft.Alpha"]){ op = el.filters["DXImageTransform.Microsoft.Alpha"].opacity } return op ? op /100 :op//如果是零就不用除100了 }; var setIEOpacity = function(el,value){ if(!el.currentStyle.hasLayout){ el.style.zoom = 1;//让元素获得hasLayout } if(el.filters.alpha){ //必须已经定义过透明滤镜才能使用以下便捷方式 el.filters.alpha.opacity = value * 100; }else{ el.style.filter = "alpha(opacity="+value *100+")"; } return el; }; var clearOpacity = function(el){ if(el.filters.alpha){//处理IE el.filters.alpha = null; }else if(el.filters["DXImageTransform.Microsoft.Alpha"]){//处理IE el.filters["DXImageTransform.Microsoft.Alpha"] = null; }else{//处理标准游览器 el.style.opacity = '' } return el; }
如果你有更好的方法,请不吝赐教!