Skip to content

Instantly share code, notes, and snippets.

@AndiSHFR
Created August 15, 2016 14:03
Show Gist options
  • Save AndiSHFR/f15dad0cd0b93bef45a6517c619877ee to your computer and use it in GitHub Desktop.
Save AndiSHFR/f15dad0cd0b93bef45a6517c619877ee to your computer and use it in GitHub Desktop.
mixColor : Javascript function to mix percentual between a start and an end color
var mixColor = function(hexColorStart, hexColorEnd, percent) {
/* Example:
var startColor = '#FF8000';
var endColor = '#0080FF';
var t = [];
for(var i=0; i < 100; i += 10 ) {
var mix = mixColor(startColor, endColor, i);
t.push('<span style="display: inline-block; width: 20px; height: 60px; background-color: ' + mix + '">&nbsp;</span>');
}
document.getElementById('demo').innerHTML = t.join('');
*/
var toRgb = function(x) {
var i = parseInt(x.toString().replace('#', ''), 16);
return {
r : (i >> 16) & 255
, g : (i >> 8) & 255
, b : i & 255
};
}
var rgbStart = toRgb(hexColorStart);
var rgbEnd = toRgb(hexColorEnd);
var deltaRgb = {
r: (rgbEnd.r - rgbStart.r) / 100 * percent
, g: (rgbEnd.g - rgbStart.g) / 100 * percent
, b: (rgbEnd.b - rgbStart.b) / 100 * percent
};
var resultRgb = {
r: Math.round(rgbStart.r + deltaRgb.r)
, g: Math.round(rgbStart.g + deltaRgb.g)
, b: Math.round(rgbStart.b + deltaRgb.b)
};
return '#'
+ ( resultRgb.r < 16 ? '0' : '' ) + resultRgb.r.toString(16)
+ ( resultRgb.g < 16 ? '0' : '' ) + resultRgb.g.toString(16)
+ ( resultRgb.b < 16 ? '0' : '' ) + resultRgb.b.toString(16);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment