我有以下代码可以获取一个元素的背景色。
var currentColor = $(this).css('background-color');
现在我想把它转换成 rgba 并以 0.75 的 alpha 值显示,类似于 rgba(123,123,123,0.75)
,你有什么建议吗?
我有以下代码可以获取一个元素的背景色。
var currentColor = $(this).css('background-color');
现在我想把它转换成 rgba 并以 0.75 的 alpha 值显示,类似于 rgba(123,123,123,0.75)
,你有什么建议吗?
由于jQuery似乎总是返回没有alpha通道的元素的颜色,如rgb(r, g, b)
,因此您可以简单地使用:
由于jQuery似乎总是为没有alpha通道的元素返回颜色值,类似于rgb(r, g, b)
,所以您可以简单地使用以下代码:
$(this).css('background-color').replace(')', ', 0.75)').replace('rgb', 'rgba');
请确保背景颜色当前不是rgba:
var bg = $(this).css('background-color');
if(bg.indexOf('a') == -1){
var result = bg.replace(')', ', 0.75)').replace('rgb', 'rgba');
}
this
没有设置背景颜色,css('background-color')
将返回undefined
。 - Andre Figueiredoreplace
与substr
来实现这一点的差异。显然,substr
是赢家。https://jsperf.com/replace-rbg-with-rgba - ctrlplusbvar re = /(rgb)\(([0-9]+),\s+([0-9]+),\s+([0-9]+)/;
var currentColor = $(this).css('background-color');
var subst = 'rgba($2,$3,$4,0.75';
$(this).css('background-color', currentColor.replace(re, subst));
另一种使用正则表达式的解决方案。但是正如 Cerbrus 所提到的,对于这么简单的事情使用正则表达式有些过度。
currentColor.replace(re, subst)
对我来说返回了类似于这样的东西: "rgb(255, 255, 255)"
。 - CerbruscurrentColor.replace(re, subst)
--> "rgba(rgb,255,255,0.75)"
。对于这两个替换操作,正则表达式实在是过于复杂了。 - Cerbrus另一个正则表达式尝试 http://jsfiddle.net/hc3BA/
var colour = 'rgb(123,123,123)',
new_col = colour.replace(/rgb/i, "rgba");
new_col = new_col.replace(/\)/i,',0.75)');