let color2RGB = (hexColor, opacity) => {
// 16进制颜色值的正则
let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
let color = hexColor.toLowerCase();
if (reg.test(color)) {
// 如果只有三位的值,需变成六位,如:#fff => #ffffff
if (color.length === 4) {
let colorNew = "#";
for (let i = 1; i < 4; i += 1) {
colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1));
}
color = colorNew;
}
// 处理六位的颜色值,转为RGB
const colorArr = [];
for (let i = 1; i <= 6; i += 2) {
colorArr.push(parseInt("0x" + color.slice(i, i + 2)));
}
return `rgba(${colorArr.join(",")},${opacity || 1})`
} else if (/^(rgb)/i.test(color)) {
// 如果只是rgba修改透明度
let arr = color.replace(/(?:\(|\)|rgba|rgb)*/gi, "").split(",")
let colorArr = arr.slice(0, 3)
let oldOpacity = arr.slice(3)[0] || 1
return `rgba(${colorArr.join(",")},${['', undefined, null].includes(opacity)? oldOpacity: opacity})`
} else {
return color;
}
};
//调用转换
color2RGB(十六进制颜色, 0.1);