我有一种十进制颜色,需要将其转换为rgb并转换回de,所以我用它来这样做:
var currentcolor = 0xffd100;
const rgb_format = (c) => {
var newrgb = {r: (c & 0xff0000) >> 16,
g: (c & 0x00ff00) >> 8,
b: (c & 0x0000ff)}
return newrgb;
};
var rgb = rgb_format(currentcolor);
const decimal_format = (newrgb) => {
let decimal = (newrgb.r << 16) + (newrgb.g << 8) + (newrgb.b);
console.log(decimal);
return decimal;
};
color.color = decimal_format(rgb);
事实是,我有一个rgb编辑器,每个值(r,g,b)都有滑块。它们会按预期工作,但是当r
中的值等于或小于16时,其他滑块(g,b)会停止更改要编辑其颜色的组件的颜色。
[r
和b
为0且g
大于16时也会发生这种情况。在这种情况下,当g小于16时,g会将颜色更改为红色,而当大于16时,g则不会更改为红色。显示颜色。这是显示我的问题的gif文件:color-editing-problem-gif要么alternate
...我也在显示这样的颜色:
style="background: #{currentcolor.toString(16)};
无法正常工作。考虑颜色1092十进制(0x000444)。如果currentcolor
具有该值,则currentcolor.toString(16)
会产生444
。 #444
与CSS中的#000444
相同,#444
是颜色#444444
。同样,颜色65535(0x00FFFF)将产生#ffff
,这是无效的CSS颜色(它们必须是三位或六位数字,而不是四位)。为了正确输出颜色,您需要填充字符串的开头:
style="background: #{currentcolor.toString(16).padStart(6, "0")}