封装一个颜色转换的js函数


比如:1、rgb转#04c304。2、 #04c304转0x04c304。3、0x04c304转#04c304。可以对颜色进制进行转换。

function convertToHexColor(hexString) {
    if (hexString.indexOf('rgb') != -1) {
        // 使用正则表达式提取红、绿和蓝通道的十进制值
        const match = rgbColor.match(/^rgb\((\d+), (\d+), (\d+)\)$/);
        if (!match) {
            // 如果输入的不是有效的 RGB 格式,则返回空字符串或其他错误处理
            return '';
        }
        // 提取十进制值
        const red = parseInt(match[1], 10);
        const green = parseInt(match[2], 10);
        const blue = parseInt(match[3], 10);
        // 将十进制值转换为两位数的十六进制值并拼接
        const hexRed = red.toString(16).padStart(2, '0');
        const hexGreen = green.toString(16).padStart(2, '0');
        const hexBlue = blue.toString(16).padStart(2, '0');
        // 返回 #RRGGBB 格式的字符串
        return `#${hexRed}${hexGreen}${hexBlue}`;
    } else if (hexString.indexOf('#') != -1) {
        // 移除可能存在的 "#" 符号
        hexColor = hexColor.replace(/^#/, '');
        // 添加 "0x" 前缀并返回
        return `0x${hexColor}`;
    } else {
        // 移除可能存在的 "0x" 前缀
        hexString = hexString.replace(/^0x/, '');
        // 解析红、绿和蓝通道值
        const red = parseInt(hexString.substr(0, 2), 16);
        const green = parseInt(hexString.substr(2, 2), 16);
        const blue = parseInt(hexString.substr(4, 2), 16);
        // 转换为 #RRGGBB 格式
        const hexColor = `#${red.toString(16).padStart(2, '0')}${green.toString(16).padStart(2, '0')}${blue.toString(16).padStart(2, '0')}`;
        return hexColor;
    }
}

191

声明:Web前端小站 - 前端博客 - 王搏的个人博客|版权所有,违者必究|如未注明,均为原创

转载:转载请注明原文链接 - 封装一个颜色转换的js函数

评论
孙瑞杰生日