透明度设置
来源:Ruby's Louvre 时间:2009-12-12 18:51:00
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;
}
如果你有更好的方法,请不吝赐教!