对给定的两个色彩值举行渐变盘算,获得渐变的所有色值的数组。
JavaScript怎样盘算两个色彩之间的渐变色值? — 知乎
// rgb to hex
function rgbToHex(r, g, b){
var hex = ((r<<16) | (g<<8) | b).toString(16);
return "#" + new Array(Math.abs(hex.length-7)).join("0") + hex;
}
// hex to rgb
function hexToRgb(hex){
var rgb = [];
for(var i=1; i<7; i+=2){
rgb.push(parseInt("0x" + hex.slice(i,i+2)));
}
return rgb;
}
// 盘算渐变过渡色
function gradient (startColor,endColor,step){
// 将 hex 转换为rgb
var sColor = hexToRgb(startColor),
eColor = hexToRgb(endColor);
// 盘算R\G\B每一步的差值
var rStep = (eColor[0] - sColor[0]) / step;
gStep = (eColor[1] - sColor[1]) / step;
bStep = (eColor[2] - sColor[2]) / step;
var gradientColorArr = [];
for(var i=0;i<step;i++){
// 盘算每一步的hex值
gradientColorArr.push(rgbToHex(parseInt(rStep*i+sColor[0]),parseInt(gStep*i+sColor[1]),parseInt(bStep*i+sColor[2])));
}
return gradientColorArr;
}
作者:你爱谁如鲸向海
链接:https://www.zhihu.com/questio…
示例:盘算 #ec9089 与 #c12927 之间的渐变色值,步长设定为 100
var startColor = '#ec9089';
var endColor = '#c12927';
var step = 100;
var colorArr = gradient(startColor, endColor, 100);
console.log(colorArr)
// ["#ec9089", "#eb8e88", "#eb8d87", "#ea8c86", ...]