以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
78. HEX转换为RGBA
function hexToRgb(hex) { // 去除可能存在的 # 号 hex = hex.replace("#", ""); // 如果不是合法的 3/6 位十六进制颜色码,返回 false if (!hex.match(/^([0-9a-f]{3}|[0-9a-f]{6})$/i)) { return false; } // 将 3 位颜色码转换为 6 位 if (hex.length === 3) { hex = hex.replace(/(.)/g, "$1$1"); } // 将 16 进制颜色码转换为 RGB 数值 var hexNum = parseInt(hex, 16); var r = hexNum >> 16; var g = (hexNum & 0x00ff00) >> 8; var b = hexNum & 0x0000ff; // 如果 RGB 数值不合法,返回 false if (isNaN(r) || isNaN(g) || isNaN(b) || r > 255 || g > 255 || b > 255) { return false; } // 转换 RGB 数值为函数格式的 RGBA var alpha = 1; var rgba = "rgba(" + r + "," + g + "," + b + "," + alpha + ")"; return rgba;}
以上代码使用正则表达式判断颜色码是否合法,使用位运算将 16 进制颜色码转换成 RGB 数值,最后将 RGB 数值按照函数格式拼接并返回即可。需要注意的是,如果没有给出 alpha 值,函数格式为 rgba(r, g, b, 1)
。