Hasty Briefsbeta

Bilingual

A few ways of specifying per-theme colours in only CSS

3 days ago
  • #Theming
  • #Web Development
  • #CSS
  • CSS supports multiple techniques for theme-based color specification: manual coding, CSS variables, color-mix(), light-dark() function, if() function, and paused @keyframes animations.
  • Key requirements include supporting auto (via prefers-color-scheme), light, and dark modes via radio buttons without JavaScript, with assumptions of HTML structure and CSS features like @media and :has().
  • Manual approach is verbose but compatible; variables (since 2014-2017) separate definitions and use; color-mix() (since 2023-05) allows interpolation; light-dark() (since 2024-05) is compact but limited to light/dark.
  • if() is Chromium-only; @keyframes (since 2020-01) offers flexibility but complexity.
  • Each method varies in compatibility, verbosity, maintainability, theme support, and interpolation capabilities, with trade-offs for different use cases.