数日前、ランダムな色を生成するJavaScript関数を探し始めました。
スクリプトを見つけて、独自の変更を加えました。
function getRandColor(brightness)
{
//6 levels of brightness from 0 to 5, 0 being the darkest
var rgb = [Math.random() * 256, Math.random() * 256, Math.random() * 256];
var mix = [brightness*51, brightness*51, brightness*51]; //51 => 255/5
var mixedrgb = [rgb[0] + mix[0], rgb[1] + mix[1], rgb[2] + mix[2]].map(function(x){ return Math.round(x/2.0)})
var rgb = mixedrgb[2] | (mixedrgb[1] << 8) | (mixedrgb[0] << 16);
return '#' + rgb.toString(16);
}
関数にコントラストパラメータを追加したいと思います。これはどのように行うことができますか?
また、計算をより速く行う方法があると思われる場合は、共有してください。ありがとう。
多くの検索とテストを行った後(私はこの色が非常に悪いため)、hslを16進色に変換する関数を作成しました。hslプロパティを使用して必要な色を作成するのは非常に簡単なので、hslを使用しています。
関数は本当に悪くて醜いので、私がそれをより良くするのを手伝ってください。たとえば、random関数は、100回の呼び出しでも重複した値を返します。
function RandomValue(MinValue,MaxValue)
{
return parseInt(Math.random()*(MaxValue-MinValue+1), 10)+MinValue;
}
function GetRandomColor()
{
var h = RandomValue(1, 360); // color hue between 1 and 360
var s = RandomValue(20, 100); // saturation 0-100%
var l = RandomValue(50, 70); // lightness 0-70%
/* Convert the HSL values to HEX */
return HSLtoRGB(h, s, l);
}
function HSLtoRGB(h, s, v)
{
var r, g, b;
var i;
var f, p, q, t;
h = Math.max(0, Math.min(360, h));
s = Math.max(0, Math.min(100, s));
v = Math.max(0, Math.min(100, v));
s /= 100;
v /= 100;
if(s == 0)
{
r = g = b = v;
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
h /= 60;
i = Math.floor(h);
f = h - i;
p = v * (1 - s);
q = v * (1 - s * f);
t = v * (1 - s * (1 - f));
switch(i)
{
case 0:
r = v;
g = t;
b = p;
break;
case 1:
r = q;
g = v;
b = p;
break;
case 2:
r = p;
g = v;
b = t;
break;
case 3:
r = p;
g = q;
b = v;
break;
case 4:
r = t;
g = p;
b = v;
break;
default:
r = v;
g = p;
b = q;
}
var rgb = Math.round(b * 255) | (Math.round(g * 255) << 8) | (Math.round(r * 255) << 16);
var m=rgb.toString(16);
switch(m.length)
{
case 5:return '#' + rgb.toString(16) + '0';break;
case 4:return '#' + rgb.toString(16) + '00';break;
default:return '#' + rgb.toString(16);break;
}
}
for (var i = 0; i < 500; i++) {
var div = document.createElement('div');
div.style.backgroundColor = GetRandomColor() ;
document.body.appendChild(div);
}