Skip to content

Instantly share code, notes, and snippets.

@iamgideonidoko
Created May 21, 2023 06:34
Show Gist options
  • Save iamgideonidoko/b3882061078d68d0f8ddca5717500c6c to your computer and use it in GitHub Desktop.
Save iamgideonidoko/b3882061078d68d0f8ddca5717500c6c to your computer and use it in GitHub Desktop.
Lighten or darken a color
/**
* Lighten (+ve) or darken (-ve) color.
*
* @param {string} col Color
* @param {number} amt Intensity of light
*/
export const adjustColorIntensity = (col = '#000000', amt = 0) => {
let usePound = false;
if (col[0] === '#') {
// eslint-disable-next-line no-param-reassign
col = col.slice(1);
usePound = true;
}
const num = parseInt(col, 16);
let r = (num >> 16) + amt;
if (r > 255) r = 255;
else if (r < 0) r = 0;
let b = ((num >> 8) & 0x00ff) + amt;
if (b > 255) b = 255;
else if (b < 0) b = 0;
let g = (num & 0x0000ff) + amt;
if (g > 255) g = 255;
else if (g < 0) g = 0;
const hexVal = (g | (b << 8) | (r << 16)).toString(16);
let newHexVal = hexVal;
for (let i = 0; i < 6 - hexVal.length; i += 1) {
newHexVal = `0${newHexVal}`;
}
return (usePound ? '#' : '') + newHexVal;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment