JS のランダムな色は多くの場所で使用されています。たとえば、多くのタグ接続がカラフルであることがわかります。次に、これに到達する必要があります。以下から始めてください:
方法は全部で2つあります。 1 つは美しい色の候補のセットを準備する方法、もう 1 つは色をランダムに生成する方法です 。
実装 1
var スコープ = thisObj || window;
var a = [];
for ( var i=0, j=this.length; i
a.push (fn.call(scope, this[i], i, this));
}
return a;
var getRandomColor = function(){
return '#' '0123456789abcdef'.split('').map(function(v,i,a){
return i>5 ? null : a[Math.floor(Math.random()*16)] }).join ('');
}
これには、Map が配列を返し、結合を使用してその要素を文字列に変換する必要があります。
return '#' Math.floor(Math.random()*16777215).toString(16);
}
この実装は素晴らしいですが、少しバグがあります。 16 進数のカラー値は #000000 から #ffffff までであり、次の 6 桁は 16 進数で、「0x000000」から「0xffffff」に相当することがわかります。この実装の考え方は、まず 16 進数 ffffff の最大値を 10 進数に変換し、ランダム化を実行してから 16 進数に戻すというものです。値 16777215 を取得する方法を見てみましょう。
return '#' (Math.random()*0xffffff<<0).toString(16);
基本的には 4 の改善を実装し、左シフト演算子を使用して 0xffffff を整数に変換します。こうすることで、16777215 を覚える必要がなくなります。左シフト演算子の優先順位は乗算符号ほど良くないため、左シフトはランダム化後に実行され、Math.floor も使用されません。
実装 6
var getRandomColor = function(){
return '#' (function(h){
return new Array(7-h.length).join("0") h
})((Math.random()*0x1000000<< ;0).toString(16))
}
実装 7
var getRandomColor = function(){
return '#' ('00000' (Math.random()*0x1000000<<0).toString(16)).substr(-6);
}
実際に試してみましょう: