16进制颜色转Rgba
最近遇到一个问题,从api获取的配置颜色是16进制色值,但是要增加透明度给页面上的元素,只好将16进制色值转成rgba色值。于是同事实验折腾之后的结果如下:
/**
* title: transferColorToRgb
* description: 将色值转为rgb
*/
export function transferColorToRgb (color, opactiy) {
if (typeof color !== 'string' && !(color instanceof String)) return console.error("请输入16进制字符串形式的颜色值");
color = color.charAt(0) === '#' ? color.substring(1) : color;
if (color.length !== 6 && color.length !== 3) return console.error("请输入正确的颜色值");
if (color.length === 3) {
color = color.replace(/(\w)(\w)(\w)/, '$1$1$2$2$3$3');
}
var reg = /\w{2}/g;
var colors = color.match(reg);
for (var i = 0; i < colors.length; i++) {
colors[i] = parseInt(colors[i], 16).toString();
}
if (opactiy != undefined && opactiy >= 0 && opactiy <= 1 ){
return `rgba(${colors.join()},${opactiy})`;
}
return 'rgb(' + colors.join() + ')';
}
有一群好的小伙伴,让自己节约了学习时间,Happy~