Skip to content

Instantly share code, notes, and snippets.

@janosorcsik
Created May 19, 2021 15:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save janosorcsik/6b42d41704008ce66abf76533229923e to your computer and use it in GitHub Desktop.
Save janosorcsik/6b42d41704008ce66abf76533229923e to your computer and use it in GitHub Desktop.
Hex to HSL
function toHSL(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
var r = parseInt(result[1], 16);
var g = parseInt(result[2], 16);
var b = parseInt(result[3], 16);
(r /= 255), (g /= 255), (b /= 255);
var max = Math.max(r, g, b),
min = Math.min(r, g, b);
var h,
s,
l = (max + min) / 2;
if (max == min) {
h = s = 0;
} else {
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
s = s * 100;
s1 = Math.round(s);
l = l * 100;
l1 = Math.round(l);
h = Math.round(360 * h);
console.log("hsl(" + h + ", " + s.toFixed(1) + "%, " + l.toFixed(1) + "%)");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment