zudo-css

Type to search...

to open search from anywhere

Custom Properties Pattern Catalog

CreatedMar 13, 2026UpdatedMar 26, 2026Takeshi Takatsudo

A comprehensive collection of CSS custom property patterns for building robust design systems, responsive layouts, and component architectures — all with interactive demos.

Responsive Custom Properties

Custom properties that change at breakpoints using @media create a responsive design system without utility classes. Define your tokens once and let media queries adapt them.

:root {
  --content-padding: 1rem;
}
@media (min-width: 768px) {
  :root {
    --content-padding: 2rem;
  }
}

Every element referencing --content-padding automatically updates at the breakpoint — no per-component overrides needed.

Responsive Custom Properties

CSS Counters with Custom Properties

CSS counters generate automatic numbering. Combine them with custom properties to make the counter styling configurable — change colors, sizes, or shapes from a parent element.

CSS Counters with Custom Properties

Custom Property Inheritance for Component Trees

A parent component sets custom properties, and deeply nested children inherit them automatically — no prop drilling, no extra classes. This is one of the most powerful patterns for component theming.

Custom Property Inheritance

Calc-Based Spacing Scale

Define a single base spacing unit, then derive an entire scale with calc(). Changing the base value reshapes every spacing token at once.

:root {
  --space-unit: 8px;
  --space-xs: calc(var(--space-unit) * 0.5);
  --space-sm: var(--space-unit);
  --space-md: calc(var(--space-unit) * 2);
  --space-lg: calc(var(--space-unit) * 3);
  --space-xl: calc(var(--space-unit) * 5);
}
Calc-Based Spacing Scale

Color System with Custom Properties

Separate HSL components into individual custom properties for maximum flexibility. You can derive hover states, lighter/darker variants, and transparency from a single color definition.

:root {
  --primary-h: 220;
  --primary-s: 80%;
  --primary-l: 50%;
}
.button {
  background: hsl(var(--primary-h) var(--primary-s) var(--primary-l));
}
.button:hover {
  background: hsl(var(--primary-h) var(--primary-s) calc(var(--primary-l) - 10%));
}
HSL Color System

References

Revision History