TaskStyle three elements: .a with color #3B82F6 (hex), .b with rgb(59 130 246 / 0.7) (modern rgb), .c with oklch(0.66 0.18 252) (OKLCH equivalent of the same blue).
Color formats: hex, rgb, hsl, oklch
75 XP7 min
Theory
Four ways to write the same color
.a { color: #3B82F6; } /* hex β short, opaque (or #3B82F6ff for full alpha) */
.b { color: rgb(59 130 246 / 0.8); } /* modern rgb (no commas, slash for alpha) */
.c { color: hsl(217 91% 60% / 0.8); } /* hue saturation lightness */
.d { color: oklch(0.66 0.18 252 / 0.8); } /* OKLCH β modern, perceptually uniform */When to use each
- `#hex` β copy-paste from Figma. Familiar. Fine for static brand colors.
- `rgb()` β when you need alpha and the color came from a designer as RGB. Use the modern slash syntax:
rgb(255 0 0 / 0.5). - `hsl()` β when you want to MANIPULATE the color (lighten, darken, shift hue) by tweaking one channel.
- `oklch()` β when you want perceptual uniformity across hues. Best modern default.
What's wrong with hsl?
HSL was meant to be intuitive: "blue at 50% lightness, green at 50% lightness." But human vision isn't proportional to RGB lightness β at the same HSL lightness, yellow looks WAY brighter than blue. Algorithmic palette generation in HSL produces lumpy results.
What OKLCH fixes
- L (lightness) β perceptual lightness. 0.5 looks like 0.5 across every hue.
- C (chroma) β saturation. 0 = grey, ~0.3 = vivid.
- H (hue) β degree on the color wheel (0-360).
Same L β same perceived brightness across blue, green, red. Critical for design-system palettes.
π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.