如何在javascript中生成随机灰色

nat*_*atz 2 javascript paperjs

我有一个功能,只想生成灰色.如何使用下面的代码执行此操作?我是javascript的新手!我很感激任何帮助.我正在使用Paper.js

 function onMouseDown(event) {
        path = new Path();
        path.fillColor = {
            hue: Math.random() * 360,
            //saturation: 0,
            //brightness: 0.5
        };

        path.add(event.point);
    }
Run Code Online (Sandbox Code Playgroud)

Moo*_*oob 8

由于灰色具有相同的RGB分量,因此您可以生成0 - ff范围内的十六进制,并将其用于R,G,B部分中的每一个:

function randomGreyHex() {
  var v = (Math.random()*(256)|0).toString(16);//bitwise OR. Gives value in the range 0-255 which is then converted to base 16 (hex).
  return "#" + v + v + v;
}

/* demo usage: */
var div = document.querySelector("div");
div.addEventListener("click", function() {
  var grey = randomGreyHex();
  this.style.backgroundColor = grey;
  this.innerHTML = grey;
});
Run Code Online (Sandbox Code Playgroud)
div {
  height: 100px;
  border: 1px solid red;
  text-shadow: 0 0 10px white;
}
Run Code Online (Sandbox Code Playgroud)
<div id="div">click me</div>
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我看到你打败了我!:-)如果OP有兴趣使用RGB,那么我在[这个小提琴](https://jsfiddle.net/53rqxtp4/5/)中做了一个例子,其中颜色略有变化,仅限于一些中音调(不是100%黑色而不是100%白色).但是,您是否介意确切解释`(255)| 0)`部分的作用?我看到它按预期工作,返回0到255之间的数字,这是一个很棒的方法,我以前没见过它,我想知道它背后的技术性? (3认同)
  • @Chri.s这是一个[Bitwise OR运算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#.7c_%28Bitwise_OR%29)并有效地截断随机小数点处的数字(因此在这个意义上与Math.floor相同). (2认同)