我试图将rgba
转换为十六进制颜色代码,但无法转换剩余颜色的不透明度值,我可以转换,
下面是我的代码
var colorcode = "rgba(0, 0, 0, 0.74)";
var finalCode = rgba2hex(colorcode)
function rgba2hex(orig) {
var a, isPercent,
rgb = orig.replace(/\s/g, '').match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i),
alpha = (rgb && rgb[4] || "").trim(),
hex = rgb ?
(rgb[1] | 1 << 8).toString(16).slice(1) +
(rgb[2] | 1 << 8).toString(16).slice(1) +
(rgb[3] | 1 << 8).toString(16).slice(1) : orig;
if (alpha !== "") { a = alpha; }
else { a = 01; }
hex = hex + a;
return hex;
}
console.log(finalCode)
这里我需要阿尔法值也转换为十六进制代码。
请建议如何转换
输出
预计:000000bd
8条答案
按热度按时间8ftvxx2r1#
由于rgba()表示法中的Alpha通道表示为0 ~ 1值,因此在尝试将其转换为十六进制形式之前,需要将其乘以255:
但请注意,这只是rgba表示法之一,并且它将例如基于百分比的表示法失败。
还请注意,并非所有浏览器都支持RGBA HEX表示法,因此您可能更喜欢使用其他方法来转换值,具体取决于您想要使用它做什么。
kcwpcxri2#
我的解决方案。希望有用。
qf9go6mv3#
太棒了@kaiido,我试过了
0h4hbjxa4#
试试这个:
rgba(255, 255, 255, 0) => #ffffff00
rgba(0, 0, 0, 0) => #00000000
rgba(124, 255, 3) => #7cff03
rgba(255, 255, 255, 0) => #ffffff
代码构建基于:
fhg3lkii5#
如果你有字符串形式的rgba颜色,你可以这样做。
oxcyiej76#
只需创建一个功能,以更有效!代码与上面相同。
lqfhib0f7#
这是一个简化的选项。
适用于rgb和rgba。
gwbalxhn8#