javascript - 在javascript中生成随机颜色的最佳方法?

不使用框架。

我编写了2个函数:


function get_random_color() 
{
 var color ="";
 for(var i = 0; i < 3; i++) {
 	var sub = Math.floor(Math.random() * 256).toString(16);
 	color += (sub.length == 1 ?"0" + sub : sub);
 }
 return"#" + color;
}

function get_rand_color()
{
 var color = Math.floor(Math.random() * Math.pow(256, 3)).toString(16);
 while(color.length < 6) {
 	color ="0" + color;
 }
 return"#" + color;
}

哪个更好?有没有更好的方法?

时间:

我喜欢第二个,虽然可以稍微简单一点:


// Math.pow is slow, use constant instead.
var color = Math.floor(Math.random() * 16777216).toString(16);
// Avoid loops.
return '#000000'.slice(0, -color.length) + color;

如果使用javascript颜色操作库,像jquery-color ,那么颜色生成会变得非常简单:


function rainbow() {
 // 30 random hues with step of 12 degrees
 var hue = Math.floor(Math.random() * 30) * 12;

 return $.Color({
 hue: hue,
 saturation: 0.9,
 lightness: 0.6,
 alpha: 1
 }).toHexString();
};

以下是生成随机颜色,并提供最小亮度的方法:


function randomColor(brightness){
 function randomChannel(brightness){
 var r = 255-brightness;
 var n = 0|((Math.random() * r) + brightness);
 var s = n.toString(16);
 return (s.length==1) ? '0'+s : s;
 }
 return '#' + randomChannel(brightness) + randomChannel(brightness) + randomChannel(brightness);
}

用0-255之间的值调用randomColor,以指示颜色应有多亮。

更简洁:


function get_random_color2() 
{
 var r = function () { return Math.floor(Math.random()*256) };
 return"rgb(" + r() +"," + r() +"," + r() +")";
}

最简洁的:


function get_random_color()
{
 return '#' + Math.random().toString(16).substring(4);
}

...