Skip to content

Instantly share code, notes, and snippets.

@brookjordan
Created February 23, 2019 07:56
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 brookjordan/b2353defa502381ae1825cfde843f5f9 to your computer and use it in GitHub Desktop.
Save brookjordan/b2353defa502381ae1825cfde843f5f9 to your computer and use it in GitHub Desktop.
Convert rgb colours to hsl colours in pure css
:root {
--r: 200;
--g: 100;
--b: 50;
--r1: calc(var(--r) / 255);
--r2: calc(var(--r1) * 100%);
--g1: calc(var(--g) / 255);
--g2: calc(var(--g1) * 100%);
--b1: calc(var(--b) / 255);
--b2: calc(var(--b1) * 100%);
--max: max(var(--r1), var(--g1), var(--b1));
--min: min(var(--r1), var(--g1), var(--b1));
--max-min: calc(var(--max) - var(--min));
--l1: calc(
calc(var(--max) + var(--min))
/
2
);
--l2: max(-1, min(1,
calc(
calc(var(--l1) - 0.5000001)
*
1e9
)
));
--l3: calc(var(--l2) + 1);
--s1: calc(
var(--l3)
-
calc(
var(--l2)
*
calc(var(--max) + var(--min))
)
);
--s2: calc(var(--max-min) / var(--s1));
--r-max: max(0, calc(
calc(var(--r1) - var(--max) + 1e-9)
*
1e9
));
--g-max: max(0, calc(
calc(var(--g1) - var(--max) + 1e-9)
*
1e9
-
var(--r-max)
));
--b-max: max(0, calc(
calc(var(--b1) - var(--max) + 1e-9)
*
1e9
-
var(--r-max)
-
var(--g-max)
));
--r-hue: calc(
calc(var(--g1) - var(--b1))
/
var(--max-min)
);
--g-hue: calc(
calc(var(--b1) - var(--r1))
/
var(--max-min)
+
2
);
--b-hue: calc(
calc(var(--r1) - var(--g1))
/
var(--max-min)
+
4
);
--h1: calc(
calc(var(--r-hue) * var(--r-max))
+
calc(var(--g-hue) * var(--g-max))
+
calc(var(--b-hue) * var(--b-max))
);
--h: calc(var(--h1) * 60);
--s: calc(var(--s2) * 100%);
--l: calc(var(--l1) * 100%);
--il1: min(1, max(0, calc(1e9 * calc(0.5 - var(--l1)))));
--il2: calc(var(--il1) * 0.8 + 0.1);
--il: calc(var(--il2) * 100%);
font-size: 43.4vh;
line-height: 50vh;
font-family: monospace;
font-weight: 900;
}
.rgb {
color: rgb(var(--r2), var(--g2), var(--b2));
background-color: hsl(var(--h), var(--s), var(--il));
}
.hsl {
color: hsl(var(--h), var(--s), var(--l));
background-color: hsl(var(--h), var(--s), var(--il));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment