在做网站时我们时常用filter:alpha(Opacity=70);类似这要的css样式来设置某个元素呈半透明状态,无可厚非,这样是可以的,但是存在一个很大的问题是,包含在元素中的文字也会随之变成半透明状态,如果透明度设得高一点的话就连文字基本上也看不到了。这里用js来实现元素半透明,而其中的文字正常显示的方法:// 把16进制颜色转换成rgb格式
var colorToRGB = function (color) {
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/g;
var sColor = color.toLowerCase();
if (sColor && reg.test(sColor)) {
if (sColor.length === 4) {
var sColorNew = "#";
for (var i = 1; i
sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
}
sColor = sColorNew;
}
//处理六位的颜色值
var sColorChange = [];
for (var i = 1; i
sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));
}
return sColorChange.join(",");
} else {
return color;
}
}
var setBakckgoundAndOpacity = function (obj, color, opacity) {
var rgbaObj = colorToRGB(color);
if (jQuery.browser.msie && parseInt(jQuery.browser.version)
// 针对ie 6,7,8 通过设置内部元素position:relative;可以避免被父节点的opacity影响
jQuery(obj).children().each(function () {
if (jQuery(this).css('position') == 'static') {
jQuery(this).css('position', 'relative');
}
});
jQuery(obj).css({
'background': color,
'opacity': opacity
});
} else {
// 支持rgba颜色格式的浏览器用rgba设置透明背景色
jQuery(obj).css({
'background': 'rgba(' + colorToRGB(color) + ',' + opacity + ')'
});
}
}
setBakckgoundAndOpacity($("#content_list"), "#ffffff", 0.5);
setBakckgoundAndOpacity($("#content_list"), "#ffffff", 0.5);是将id为content_list的元素设置成白色半透明。