jquery #color到rgba?

是否可以将#ff0000这样的颜色转换为rgb?

所以将#ff0000转换为rgb(255,0,0);

我很确定这是可能的,我只是不知道如何。 任何见解都会很棒!

你可以使用:

 var s = "#ff0000"; var patt = /^#([\da-fA-F]{2})([\da-fA-F]{2})([\da-fA-F]{2})$/; var matches = patt.exec(s); var rgb = "rgb("+parseInt(matches[1], 16)+","+parseInt(matches[2], 16)+","+parseInt(matches[3], 16)+");"; alert(rgb); 

.css("background-color")将返回rgb http://api.jquery.com/css/

这里是小提琴http://jsfiddle.net/3nigma/msRqv/1/

那算法怎么样?

http://www.javascripter.net/faq/hextorgb.htm

您甚至可以创建一个使用该算法的JQuery插件。 我觉得这很酷。 我不知道是否已经存在。

纯粹使用你拥有的字符串,你可以这样:

 var color = '#FF5500'; 

首先,提取每种颜色的两个hex数字:

 var redHex = color.substring(1, 3); var greenHex = color.substring(3, 5); var blueHex = color.substring(5, 7); 

然后,将它们转换为十进制:

 var redDec = parseInt(redHex, 16); var greenDec = parseInt(greenHex, 16); var blueDec = parseInt(blueHex, 16); 

最后,得到你的rgb()字符串作为结果:

 var colorRgb = 'rgb(' + redDec + ', ' + greenDec + ', ' + blueDec + ')'; console.log( colorRgb ); 

你得到输出:

 rgb(255, 85, 0) 

您必须将所有三个组件与hex定义分开,然后将它们转换为十进制。 这有效:

 function hex2rgba(x,a) { var r=x.replace('#','').match(/../g),g=[],i; for(i in r){g.push(parseInt(r[i],16));}g.push(a); return 'rgba('+g.join()+')'; }