Skip to main content
← 🎨 CSS as a design systemΒ·Module B5 Β· Lesson 1
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.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.