【问题标题】:How do I change text-color determined by the background color?如何更改由背景颜色确定的文本颜色?
【发布时间】:2011-06-11 05:06:02
【问题描述】:

我正在寻找一种方法,最好使用 jQuery,根据背景颜色的亮度确定正确的文本颜色?

例如白色背景,黑色文字颜色。我相信这可以通过添加 HEX 值和猜测来粗略地完成,但有人知道更好的方法或 jQuery 方法吗?

【问题讨论】:

标签: javascript jquery colors hex


【解决方案1】:

您可以尝试反转颜色的十六进制值。所以#FFFFFF变成#000000#AAAAAA变成#555555。当然,当你有 #888888 时,这个方法就会失败,当你倒置时,会给你 #777777(它们没有那么大的对比)。

这个blog post 描述了另一种方式(他们只使用黑色或白色作为前景色,具体取决于背景色)。我已将其翻译成 Javascript:

function idealTextColor(bgColor) {

   var nThreshold = 105;
   var components = getRGBComponents(bgColor);
   var bgDelta = (components.R * 0.299) + (components.G * 0.587) + (components.B * 0.114);

   return ((255 - bgDelta) < nThreshold) ? "#000000" : "#ffffff";   
}

function getRGBComponents(color) {       

    var r = color.substring(1, 3);
    var g = color.substring(3, 5);
    var b = color.substring(5, 7);

    return {
       R: parseInt(r, 16),
       G: parseInt(g, 16),
       B: parseInt(b, 16)
    };
}

【讨论】:

  • 感谢您提供的信息丰富的答案,我只是在看一下您建议的代码翻译,我得到了“缺失 ; before statement [Break On This Error] int bgDelta = (components.R * 0.2...组件.G * 0.587) + (bg.B * 0.114);" - 但是我看不到那个丢失;?对你有用吗?
  • @WiseDonkey 哎呀,我已经更新了。翻译的时候忘记把bg改成components,把int改成vargetRGBComponents用分号代替逗号。
  • const IdealTextColor = ([a, b, c]: number[]) => (150
猜你喜欢
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
相关资源
最近更新 更多