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)可能会有用.
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |