随机化具有浅蓝色的颜色

时间:2014-01-01 11:08:38

标签: javascript css

我正在尝试将具有浅蓝色的颜色随机化。

我知道我可以得到所有颜色:

rgb(110, 179, 185), rgb(110, 179, 186), .... ,rgb(110, 179, 255);

rgb(110, 178, 185), ... , rgb(110, 178, 255);

但存在很多变化..

有可能吗?

我有一个随机化颜色的函数:

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;

}

我找到了这段代码:

http://jsfiddle.net/tWyq6/4/

任何帮助表示赞赏!

4 个答案:

答案 0 :(得分:2)

嗯,一种方法就是改变你找到的功能并调整你的需求:

function randHex(a, b) {
    return (Math.floor(Math.random() * a) + b).toString(16);
}

function randColor() {
    return "6E" + randHex(20, 160) + "" + randHex(56, 200);
}

这将返回颜色,110为红色,160至180为绿色,56至256为蓝色。

Updated fiddle

答案 1 :(得分:2)

你走了:

function get_random_blue() {
    return "rgb(110," 
        + ((179 - Math.random()*2)  <<0) + "," 
        + ((200 + Math.random()*55) <<0) + ")";
}

样品使用:

 get_random_blue()   // "rgb(110,177,222)"
 get_random_blue()   // "rgb(110,177,243)"
 get_random_blue()   // "rgb(110,177,200)"
 get_random_blue()   // "rgb(110,178,225)"
 get_random_blue()   // "rgb(110,178,209)"
 get_random_blue()   // "rgb(110,178,244)"

答案 2 :(得分:1)

H i,也许这应该是一个评论,但它变得越来越大,所以我会把它扔到这里

红绿蓝是RGB

在你的例子中你会注意到RGB的最后一个数字更高,这就是你的颜色会被认为更蓝的东西,只要那个频道高于其他数字(R和G),你就会创建一个颜色被认为是“蓝色”。

像混音台一样,通道被推得更高,声音更大。 (希望那里不要吃鸡蛋)

  • 您的随机化功能需要确保'B'值高于'R'和'G'值。
  • 值越低(例如 - R:0,G:0,B:10)将导致颜色越深
  • 值越高(例如 - R:220,G:220,B:255)将导致颜色变浅。

因此,在随机颜色函数中,您需要设置一些规则:

  • 一个永远不会低于的数字门槛(这是你的亮度) - 比如150
  • 'B'值始终高于'R'和'G'值(这是你的蓝色)
  • 任何值的最大值为255

答案 3 :(得分:1)

我建议您使用其他颜色模型,如HSV或HSL。选择所需颜色(由色调表示)然后随机化其他属性(饱和度和值/亮度)要容易得多。样品使用:

function rand(min, max) {
    // return float random between min and max;
}
var randBlue = hsl2rgb(240, 1, rand(0.7, 0.9));

此处已更新fiddle