javascript,在开始和结束颜色之间选择一个随机的十六进制颜色

inC*_*rol 4 javascript colors

有没有快速的方法来完成这个?

例如,起始颜色#EEEEEE和结束颜色#FFFFFF会产生类似#FEFFEE的颜色.

Den*_*ret 12

当然十六进制被编码为一个数字但是为了使它具有任何意义,你必须首先提取rgb组件:

function rgb(string){
    return string.match(/\w\w/g).map(function(b){ return parseInt(b,16) })
}
var rgb1 = rgb("#EEEEEE");
var rgb2 = rgb("#FFFFFF");
Run Code Online (Sandbox Code Playgroud)

然后简单地采用所有组件的中间件:

var rgb3 = [];
for (var i=0; i<3; i++) rgb3[i] = rgb1[i]+Math.random()*(rgb2[i]-rgb1[i])|0;
Run Code Online (Sandbox Code Playgroud)

最后将颜色重建为标准十六进制字符串:

var newColor = '#' + rgb3
    .map(function(n){ return n.toString(16) })
    .map(function(s){ return "00".slice(s.length)+s}).join(''); 
Run Code Online (Sandbox Code Playgroud)

请注意,为了获得更好的效果,取决于您的目标,例如,如果您想保持亮度,使用与RGB 不同的颜色空间(比如HSL或HSV)可能会有用.