之前项目中有用到颜色选择器插件,插件是16仅进制的,但是我们显示的时候要显示rgba格式,需要一个透明度,下面分享自己整理的rgba和16进制转换的方法。
// 16进制转换成rgba
'hexToRgb' : function(hex) {
return "rgba(" + parseInt("0x" + hex.slice(1, 3)) + "," + parseInt("0x" + hex.slice(3, 5)) + "," + parseInt("0x" + hex.slice(5, 7)) + "," + "0.7" + ")"
}
// rgba转换16进制
'RgbaToHex':function RgbaToHex(rgba_color){
// 注:rgba_color的格式为rgba(0,0,0,0.1)
if (rgba_color != '') {
var rgba = rgba_color.split("(")[1].split(")")[0].split(",");
var r = rgba[0]
var g = rgba[1]
var b = rgba[2]
var rgb = "rgb" + "(" + r + "," + g + "," + b + ")"
var _this = rgb;
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
if (/^(rgb|RGB)/.test(_this)) {
var aColor = _this.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(",");
var strHex = "#";
for (var i = 0; i < aColor.length; i++) {
var hex = Number(aColor[i]).toString(16);
hex = hex < 10 ? 0 + '' + hex : hex;// 保证每个rgb的值为2位
if (hex === "0") {
hex += hex;
}
strHex += hex;
}
if (strHex.length !== 7) {
strHex = _this;
}
return strHex;
} else if (reg.test(_this)) {
var aNum = _this.replace(/#/, "").split("");
if (aNum.length === 6) {
return _this;
} else if (aNum.length === 3) {
var numHex = "#";
for (var i = 0; i < aNum.length; i += 1) {
numHex += (aNum[i] + aNum[i]);
}
return numHex;
}
} else {
return _this;
}
} else {
return '#000000'
}
}