JS之获取随机颜色4种方法

1、实现方法:‘0123456789abcdef’[Math.floor(Math.random()*16)])随意截取字符串中的一个字符,然后判断字符串的长度是否为6,如果是,则返回color,如果不是,color : arguments.callee(color)返回正在执行的函数,即(color += ‘0123456789abcdef’[Math.floor(Math.random()*16)])并将color作为参数传进去;
var getRandomColor = function(){
  return  '#' +
    (function(color){
    return (color +=  '0123456789abcdef'[Math.floor(Math.random()*16)])
      && (color.length == 6) ?  color : arguments.callee(color);
  })('');
}
2、把Math对象,用于生成颜色值的字符串提取出来,并利用第三个参数来判断是否还继续调用自身,当5减为0的时候,一共就有留个字符,再加上最后c=0时前面添加上‘#’。
var getRandomColor = function(){
  return (function(m,s,c){
    return (c ? arguments.callee(m,s,c-1) : '#') +
      s[m.floor(m.random() * 16)]
  })(Math,'0123456789abcdef',5)
}
3、这个实现非常逆天,虽然有点小bug。我们知道十六进制表示的颜色值是从#000000到#ffffff,后面那六位数是16进制数,相当于"0x000000"到"0xffffff"。这实现的思路是将hex的最大值ffffff先转换为10进制,进行random后再转换回16进制。
var getRandomColor = function(){
  return '#'+Math.floor(Math.random()*16777215).toString(16);
}
//将0xffffff转化为10进制
var result = parseInt("0xffffff",16).toString(10);
console.log(result); //16777215

4、通过hsb生成随机颜色
var getRandomColor = function(){
    return "hsb(" + Math.random()  + ", 1, 1)";
 }

参考文档:https://www.cnblogs.com/rubylouvre/archive/2009/09/24/1572977.html

发布了28 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_40736319/article/details/89306102