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~

展示评论