工作中经常会遇到颜色区间渐变的需求,例如价格在区间内渐变
例如
颜色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},${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)
展示出来是下面的效果