我在背景中使用随机颜色,但由于文本是黑色的,当生成非常深的颜色时,文本看不见。那么在生成十六进制代码时如何排除这些深色呢?
我只能想到以下方法:
Math.floor(Math.random()*16777215).toString(16)
但是这个方法不能排除深色。请问有谁能帮忙解决这个问题吗?
先感谢您的帮助!
我在背景中使用随机颜色,但由于文本是黑色的,当生成非常深的颜色时,文本看不见。那么在生成十六进制代码时如何排除这些深色呢?
我只能想到以下方法:
Math.floor(Math.random()*16777215).toString(16)
但是这个方法不能排除深色。请问有谁能帮忙解决这个问题吗?
先感谢您的帮助!
数值越高,颜色就会越浅。你可以尝试在一个较高的数字(本例中为200
)上添加一个随机值:
var randValue = Math.floor(Math.random()*56)+200; //200 to 255
注意:十六进制最大值为FF
,相当于十进制的255
然后,您可以选择使用.toString(16)
将这些RBG值转换为十六进制,但据我所知,您可以使用RBG值设置颜色。
这里有一个jsFiddle演示
000000
至FFFFFF
),我也会确保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#212121
,它非常暗,比SO中评论的文本颜色更暗) - ajax333221随机RGB颜色,不包含数字1和2,这样你就可以得到漂亮的颜色,并且代码量更少:
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 Demo
ABCDEF
。 - Rob Bajorek
c = (Math.floor(Math.random()*0xffffff)|0x0f0f0f).toString(16);
- david