functionhexToRgb(hex) { // 移除十六进制颜色代码中的'#' let sanitizedHex = hex.replace("#", ""); // 解析红、绿、蓝值 let r = parseInt(sanitizedHex.substring(0, 2), 16); let g = parseInt(sanitizedHex.substring(2, 4), 16); let b = parseInt(sanitizedHex.substring(4, 6), 16); return`rgb(${r}, ${g}, ${b})`; }
rgba转hexa
多一个alpha,这里rgba是0~1,要乘以255,再转16进制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
functionrgbaToHexa(rgba) { // 将RGBA字符串转换为数组 let arr = rgba.split("(")[1].split(")")[0].split(","); // 提取RGBA值 let r = parseInt(arr[0]).toString(16); let g = parseInt(arr[1]).toString(16); let b = parseInt(arr[2]).toString(16); let a = Math.round(parseFloat(arr[3]) * 255).toString(16); // 如果alpha值为一位数,前面补0 r = r.length === 2 ? r : "0" + r; g = g.length === 2 ? g : "0" + g; b = b.length === 2 ? b : "0" + b; a = a.length === 2 ? a : "0" + a; // 合并为HEXA颜色 return"#" + r + g + b + a; }
hexa转rgba
1 2 3 4 5 6 7 8 9 10 11 12
functionhexToRgb(hex) { // 移除十六进制颜色代码中的'#' let sanitizedHex = hex.replace("#", ""); // 解析红、绿、蓝值 let r = parseInt(sanitizedHex.substring(0, 2), 16); let g = parseInt(sanitizedHex.substring(2, 4), 16); let b = parseInt(sanitizedHex.substring(4, 6), 16); let a = parseInt(sanitizedHex.substring(6, 8), 16) / 255; return`rgba(${r}, ${g}, ${b}, ${a})`; }
functionrgbToHsl(r, g, b) { r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, l = (max + min) / 2; if (max == min) { h = s = 0; // achromatic } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { caser: h = (g - b) / d + (g < b ? 6 : 0); break; caseg: h = (b - r) / d + 2; break; caseb: h = (r - g) / d + 4; break; } h /= 6; } return [h, s, l]; } functionhslToRgb(h, s, l) { let r, g, b; functionhue2Rgb(p, q, t) { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1/6) return p + (q - p) * 6 * t; if (t < 1/2) return q; if (t < 2/3) return p + (q - p) * (2/3 - t) * 6; return p; } let q = l < 0.5 ? l * (1 + s) : l + s - l * s; let p = 2 * l - q; r = hue2Rgb(p, q, h + 1/3); g = hue2Rgb(p, q, h); b = hue2Rgb(p, q, h - 1/3); return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; }