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

标签 javascript

this question 中我发现了很多有趣的函数来生成随机颜色。

我需要一个接受HueSaturationDarkness 的随机颜色生成器 范围以及我们需要的颜色数量。

实际上我可以写一个随机颜色生成器,但我不太了解颜色数字与暗度色调饱和度 一种颜色。我希望函数在数组中导出颜色。

我还做了一个jsfiddle file here来测试:

function get_random_color() {
    var letters = '0123456789ABCDEF'.split('');
    var color = '#';
    for (var i = 0; i < 6; i++ ) {
        color += letters[Math.round(Math.random() * 15)];
    }
    return color;
}
$.each($('div'),function(){
    $(this).css('background-color', get_random_color());
});

谢谢

最佳答案

在支持 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 + '%)';
}

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

编辑:

我刚刚在 https://github.com/davidmerfield/randomColor 上找到了一个有更多选项的不错的 JS 库

关于javascript - 具有色相/饱和度和更多控件的随机颜色生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850590/

相关文章:

javascript - API 路由可用于任何 token JWT+PASSPORT

javascript - 定位网站中的所有链接 - JavaScript

javascript - 如何在javascript中定义输入id?

javascript - 如何响应嵌入式 Tableau javascript api 中的 slider ?

javascript - Popup从底部向上滑动溢出其他div block

javascript - javascript 请求时 url 无响应

JavaScript - 有没有办法在内容下绘制 SVG 路径?

javascript - Angular 6 : Child route as parameter not updated whenever it goes to parameter link

javascript - 将来自 ArrayBuffer 的 chrome.sockets.tcp api 的服务器响应转换为字符串时出现奇怪的错误

javascript - Jquery价格 slider 无法在移动设备中滚动