IT

Temi con proprietà CSS personalizzate — e basta

Design FrontEnd

#Català #css #css3 #design #Design Systems Architecture #design-systems #FrontEnd

Il modo moderno standard per creare temi sul web è con le CSS custom properties (variabili CSS). Non serve Sass, non serve JavaScript, non serve un runtime. Questo è tutto quello che fa xarop.com per avere sei sapori.

L'idea di base

:root {
  --color-accent: #ff0000;
}

:root[data-flavor="menta"] {
  --color-accent: #00a878;
}

a { color: var(--color-accent); }

Cambiare data-flavor su <html> cambia istantaneamente tutti i riferimenti. Senza ricarica, senza ridisegno JavaScript.

Light / Dark automatico

:root {
  --bg: white;
  --text: black;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #111;
    --text: #eee;
  }
}

Rispetta le preferenze del sistema. Gli utenti hanno già un'opinione; non è necessario imporgli la nostra.

Override manuale

:root[data-theme="dark"] {
  --bg: #111;
  --text: #eee;
}

Con data-theme="dark" forziamo la modalità. Un <button> di tre righe di JavaScript può cambiare l'attributo. Opzionale — il web funziona senza.

accent-color e color-scheme

Due proprietà moderne che usiamo poco:

:root {
  accent-color: var(--color-accent);
  color-scheme: light dark;
}

accent-color colora checkbox, radio e alcuni controlli nativi. color-scheme dice al browser quali colori UI (scrollbar, form controls) deve usare.

Combinare tema + sapore

:root[data-theme="dark"][data-flavor="menta"] {
  --color-accent: #00a878;
  --bg: #111;
}

I selettori di attributi si possono combinare. Il prodotto cartesiano può crescere ma generalmente il sapore tocca solo --color-accent e varianti, mentre il tema tocca sfondi/testo. Si mantengono ortogonali.

Conclusione

Le CSS custom properties sono potenti. Nel 90% dei casi di "sistema di temi" sono tutto quello che ti serve. JavaScript per persistenza (localStorage) è opzionale — un progressive enhancement.