對給定的兩個顏色值進行漸變計算,獲得漸變的全部色值的數組。數組
JavaScript如何計算兩個顏色之間的漸變色值? -- 知乎code
// 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...ip
示例:計算 #ec9089 與 #c12927 之間的漸變色值,步長設定爲 100get
var startColor = '#ec9089'; var endColor = '#c12927'; var step = 100; var colorArr = gradient(startColor, endColor, 100); console.log(colorArr) // ["#ec9089", "#eb8e88", "#eb8d87", "#ea8c86", ...]