随机六角颜色

时间:2018-03-16 20:40:27

标签: javascript math hex

这是生成随机十六进制颜色的javascript:

'#'+(Math.random()*0xFFFFFF<<0).toString(16);
有人能跟我说话吗?

我理解Math.random的工作原理(以及最后的String),但之后我不理解语法。我有问题:

  1. Math.random()如何乘以F输出一个数字?
  2. &lt;&lt; 0是什么意思?
  3. toString上16的参数是什么意思? (这是不是意味着没有 超过16个字母?)
  4. 非常感谢任何帮助。

    谢谢,

    拉​​夫

2 个答案:

答案 0 :(得分:1)

看起来你在codegolf上选择了它。

  

Math.random()如何乘以F输出一个数字?

它不会乘以F. 0xFFFFFF会转换为16777215,因为0xFFFFFF只是十六进制的16777215方式。

  

&lt;&lt;&lt; 0是什么意思?

<<是一个bithift运算符。 <<0将所有位向左移动0位(填充符:0)。但这并没有任何意义。在这种情况下,它只删除任何小数位。

  

toString上16的参数是什么意思? (这意味着不超过16个字母?)

16是数字系统的参数。 (2是二进制,8是八进制,10是十进制/正常,16是十六进制等)。

答案 1 :(得分:0)

生成随机HEX颜色的最佳方法:

它包含两个功能:

  1. fest选择一个随机的十六进制数字。
  2. ,第二个创建一个十六进制值的数组。

    //返回十六进制数的一个可能值

    function randomHex() {
        var hexNumbers = [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        'A',
        'B',
        'C',
        'D',
        'E',
        'F'
    ]
    
        // picking a random item of the array
      return hexNumbers[Math.floor(Math.random() * hexNumbers.length)];
    }
    
    
    // Genarates a Random Hex color
    function hexGenerator() {
        hexValue = ['#'];
        for (var i = 0; i < 6; i += 1) {
            hexValue.push(randomHex());
        }
    
        return hexValue.join('');
    }
    
    
    // print out the random HEX color
    document.write(hexGenerator());
    
  3. 祝你好运