色值rgb渐变计算

1,581 阅读1分钟

工作中经常会遇到颜色区间渐变的需求,例如价格在区间内渐变

例如

颜色1:rgb(244,236,174)

颜色2:rgb(190,99,97)

现有五个元素根据值的大小,在颜色1到2之间渐变排列

颜色计算方法:

```

let calcColor = (colorStart,colorEnd,m)=>{

let n = 100;//颗粒度,自定义

let rBase = parseInt(colorStart[0]+(colorEnd[0]-colorStart[0])/n*m)

let gBase = parseInt(colorStart[1]+(colorEnd[1]-colorStart[1])/n*m)

let bBase = parseInt(colorStart[2]+(colorEnd[2]-colorStart[2])/n*m)

return (`rBase,{rBase},{gBase},${bBase}`)

}

//假设现在有5个价格,分别是 110 150 652 220 1000

//5个价格分布在上面的颜色区间

//最浅色A:是110 最深色Z:是1000

//每个颜色的占比计算 : (x-A)/(Z-A)

//五个颜色应该分别是:

this.c1 = calcColor(this.colorStart,this.colorEnd,(110-110)/(1000-110)*100)

this.c2 = calcColor(this.colorStart,this.colorEnd,(150-110)/(1000-110)*100)

this.c3 = calcColor(this.colorStart,this.colorEnd,(652-110)/(1000-110)*100)

this.c4 = calcColor(this.colorStart,this.colorEnd,(220-110)/(1000-110)*100)

this.c5 = calcColor(this.colorStart,this.colorEnd,(1000-110)/(1000-110)*100)

```

展示出来是下面的效果