我在stackoverflow上找到了这个颜色生成器:
Math.random()*0xFFFFFF<<0
工作正常。唯一的问题是我想生成随机颜色,但只有不同的灰色阴影。
我不知道如何才能实现这样的目标。
答案 0 :(得分:11)
var value = Math.random() * 0xFF | 0;
var grayscale = (value << 16) | (value << 8) | value;
var color = '#' + grayscale.toString(16);
color
将是一个随机灰度十六进制颜色值,适合在element.style
属性中使用。
注意:有几种方法可以将随机浮点数强制转换为整数。据我所知,按位OR(x | 0
)通常是最快的; floor函数(Math.floor(x)
)的速度大致相同,但只能截断正数(你必须使用Math.ceil(x)
作为负数)。对于需要超过32位的数字,按位运算符将无法按预期工作,但Math.random() * 0xFF
将始终位于[0,255)
范围内。
答案 1 :(得分:1)
如果你想使用RGB,可以通过在所有三个参数中提供相同的数字来创建rgb灰色,即rgb(255,255,255)(数字必须介于0到255之间)。
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
var randomNumberString = String(getRandomInt(0,255));
var color = "rgb(" + randomNumberString + "," + randomNumberString + "," + randomNumberString + ")";