JS之获取随机颜色4种方法
程序员文章站
2024-03-18 18:28:28
...
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
下一篇: Java第五课