十进制数值到rgb并返回十进制

问题描述 投票:0回答:1

我有一种十进制颜色,需要将其转换为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)会停止更改要编辑其颜色的组件的颜色。

[rb为0且g大于16时也会发生这种情况。在这种情况下,当g小于16时,g会将颜色更改为红色,而当大于16时,g则不会更改为红色。显示颜色。这是显示我的问题的gif文件:color-editing-problem-gif要么alternate

javascript rgb
1个回答
1
投票

...我也在显示这样的颜色: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")}

© www.soinside.com 2019 - 2024. All rights reserved.