随机十六进制发生器(仅灰色)

时间:2014-03-27 15:44:53

标签: javascript

我在stackoverflow上找到了这个颜色生成器:

Math.random()*0xFFFFFF<<0

工作正常。唯一的问题是我想生成随机颜色,但只有不同的灰色阴影。

我不知道如何才能实现这样的目标。

2 个答案:

答案 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 + ")";