具有色调/饱和度的随机颜色生成器和更多控件

Moh*_*sen 4 javascript

在这个问题中,我发现了很多有趣的函数来生成随机颜色.但我需要一个随机颜色生成器,它接受色调,饱和度和暗度范围以及我们需要的颜色数量.实际上我可以写一个随机颜色生成器,但我不太了解颜色数与颜色的暗度,色调和饱和度之间的关系.我希望函数导出数组中的颜色.我还在这里制作了一个jsfiddle文件进行测试.

谢谢,

use*_*621 15

在支持CSS3的浏览器中,不需要将HSL颜色转换为RGB,因为您可以像这样分配它们:

function rand(min, max) {
    return min + Math.random() * (max - min);
}

function get_random_color() {
    var h = rand(1, 360);
    var s = rand(0, 100);
    var l = rand(0, 100);
    return 'hsl(' + h + ',' + s + '%,' + l + '%)';
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/5V8mV/1/

使用该算法,您可以轻松地将颜色限制为带蓝色的色调,例如:http: //jsfiddle.net/DH2Bk/

如果您需要RGB转换算法(例如,对于IE8),您可以直接在规范中找到它:http://www.w3.org/TR/css3-color/#hsl-color

HOW TO RETURN hsl.to.rgb(h, s, l):
   SELECT:
     l<=0.5: PUT l*(s+1) IN m2
     ELSE: PUT l+s-l*s IN m2
   PUT l*2-m2 IN m1
   PUT hue.to.rgb(m1, m2, h+1/3) IN r
   PUT hue.to.rgb(m1, m2, h    ) IN g
   PUT hue.to.rgb(m1, m2, h-1/3) IN b
   RETURN (r, g, b)

HOW TO RETURN hue.to.rgb(m1, m2, h): 
   IF h<0: PUT h+1 IN h
   IF h>1: PUT h-1 IN h
   IF h*6<1: RETURN m1+(m2-m1)*h*6
   IF h*2<1: RETURN m2
   IF h*3<2: RETURN m1+(m2-m1)*(2/3-h)*6
   RETURN m1
Run Code Online (Sandbox Code Playgroud)

编辑:

我刚刚在https://github.com/davidmerfield/randomColor上找到了一个包含更多选项的漂亮的JS库