【问题标题】:How do I generate a random hex code that of a lighter color in javascript?如何在javascript中生成较浅颜色的随机十六进制代码?
【发布时间】:2012-11-29 18:51:09
【问题描述】:

我使用随机颜色作为背景,但由于文本是黑色的,所以当生成非常深的颜色时,无法看到文本。生成十六进制代码时如何排除这些深色?

我只能弄清楚如何得到这个:

Math.floor(Math.random()*16777215).toString(16)

但这并不排除深色。有人可以帮我吗?

提前谢谢你!

【问题讨论】:

标签: javascript hex


【解决方案1】:

数值越高,颜色越浅,可以尝试给大的数加上一个随机值(本例为200):

var randValue = Math.floor(Math.random()*56)+200; //200 to 255

注意:最大十六进制值为FF,等于十进制255

然后,您可以选择使用.toString(16) 将这些 RBG 值转换为 HEX,但据我所知,您可以使用 RBG 值设置颜色。

这是一个jsFiddle Demo

【讨论】:

  • 接受的答案会生成深色。这个完美。谢谢你似曾相识
【解决方案2】:

我要做的是为每个 (RGB) 生成一个从 00 到 FF 的数字(即 000000FFFFFF)。我还要确保 G 值大约高于 33。

【讨论】:

  • 谢谢!我只是改用这段代码:(Math.floor((Math.random()*222)+33).toString(16))+(Math.floor((Math.random()*222)+33).toString(16))+(Math.floor((Math.random()*222)+33).toString(16)) 不再生成真正的深色...谢谢!
  • @areke 我认为您的代码从十进制 33 到 254 生成。十进制 33 是​​ 21 HEX。 (这意味着你可以得到很暗的#212121,它比 SO 中 cmets 的文本颜色更暗)
  • 十六进制的 33 是​​十进制的 51。因此,如果您使用十进制值,只需将其更改为 51。
  • @KingKongFrog 33 hex 太低了,即使是 99 hex(或 153 十进制)也很黑,看看how dark they are
【解决方案3】:

没有数字 1 和 2 的随机 RGB,因此您可以用更少的代码获得漂亮的颜色:

var randomColor = (function lol(m, s, c) {
                    return s[m.floor(m.random() * s.length)] +
                        (c && lol(m, s, c - 1));
                })(Math, '3456789ABCDEF', 4);

JSFiddle演示

【讨论】:

  • 还不错,虽然我觉得有些颜色还是太暗了。我只会用ABCDEF 试试。
猜你喜欢
  • 1970-01-01
  • 2011-07-02
  • 2011-08-02
  • 2016-02-04
  • 2021-04-24
  • 2015-10-07
  • 2012-12-09
  • 2017-10-28
相关资源
最近更新 更多