关于随机生成颜色

本人暂时算是css新手,对以下方法并没有完全弄明白,此篇随笔收集颜色随机生成方法,以备急用。

方法1:随机生成6个字符然后再串到一起,闭包调用自身与三元运算符让程序变得内敛,初心者应该好好学习这种写法

var getRandomColor = function(){    

  return  '#' +    
    (function(color){    
    return (color +=  '0123456789abcdef'[Math.floor(Math.random()*16)])    
      && (color.length == 6) ?  color : arguments.callee(color);    
  })('');    

方法2:把Math对象,用于生成hex颜色值的字符串提取出来,并利用第三个参数来判断是否还继续调用自身。

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:这个要求我们对数组做些扩展,map将返回一个数组,然后我们再用join把它的元素串成字符。

以下为引用的内容:

 

Array.prototype.map = function(fn, thisObj) {

  var scope = thisObj || window; 
  var a = []; 
  for ( var i=0, j=this.length; i < j; ++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(''); 
}

 

方法4:

 

var getRandomColor = function(){

  return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6); 
}

 

方法5:

function Color()
{
  var color= '#'+(function(h){
    return new Array(7-h.length).join("0")+h
    })((Math.random()*0x1000000<<0).toString(16))

  return color;
}

posted @ 2015-08-12 11:17  fly1111345我  阅读(582)  评论(0编辑  收藏  举报