0Pricing
React Academy · Lezione

Variabili CSS per cambiare tema

Definire una palette di colori completa con proprietà personalizzate CSS e cambiare tema alternando un attributo data

Variabili CSS per cambiare tema è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Definizione dei token di colore su :root

Le proprietà personalizzate CSS (variabili) definite su :root sono disponibili globalmente in tutto il foglio di stile. Definire una palette completa una sola volta — sfondi, colori del testo, superfici, bordi — e farvi riferimento ovunque. Questa singola fonte di verità rende banale il cambio di tema.

Override del tema scuro con data-theme

Quando un attributo data-theme="dark" viene impostato su document.documentElement, un selettore CSS come [data-theme='dark'] sovrascrive le variabili radice con valori scuri. I componenti fanno riferimento a var(--color-bg) e acquisiscono automaticamente i nuovi valori senza modifiche al codice.

Variabili fondamentali da definire

Come minimo, definire: --color-bg (sfondo della pagina), --color-text (testo principale), --color-primary (colore del brand), --color-surface (sfondo di schede e pannelli) e --color-border (separatori). Un insieme coerente di token impedisce la comparsa di valori di colore definiti in modo estemporaneo nei componenti.

Applicazione delle variabili negli stili dei componenti

Nel CSS del componente, fare riferimento a variabili come background: var(--color-bg) e color: var(--color-text). È anche possibile fornire un valore di fallback: var(--color-bg, #ffffff). Il browser risolve la variabile al momento del rendering, quindi una sola classe funziona sia per i temi chiari sia per quelli scuri.

Transizione fluida durante il cambio

Aggiungere transition: background-color 200ms, color 200ms al selettore :root. Quando l'attributo data-theme cambia, tutti gli elementi che utilizzano variabili CSS eseguono simultaneamente l'animazione verso i nuovi valori. Si ottiene così un risultato curato senza codice di animazione JavaScript.

Variabili CSS e stili inline controllati da JS

Gestire il tema tramite variabili CSS è preferibile all'impostazione di stili inline da JavaScript. Il browser gestisce nativamente tutti i ricalcoli degli stili, non vengono attivati ulteriori re-render di React per ogni componente figlio a tema e la cascata CSS gestisce automaticamente l'ereditarietà. A JS basta modificare un solo attributo sull'elemento radice.

Fallback a livello di sistema con prefers-color-scheme

È possibile combinare le variabili CSS con la query @media (prefers-color-scheme: dark) come fallback esclusivamente CSS. Definire gli override scuri all'interno della media query oltre al selettore data-theme (oppure al suo posto). In questo modo la modalità scura funziona anche se JavaScript non è ancora stato eseguito.

Combinazione di data-theme e fallback con media query

L'approccio più solido combina entrambi i meccanismi: la query @media fornisce il valore predefinito del sistema operativo, mentre un attributo data-theme consente l'override dell'utente tramite JavaScript. Quando l'attributo è presente, prevale grazie alla specificità; quando è assente, entra in vigore la media query.

Immagini per la modalità scura

Per le immagini che risultano poco adatte agli sfondi scuri, utilizzare l'elemento HTML picture con un elemento figlio source media="(prefers-color-scheme: dark)". Il browser seleziona automaticamente la variante scura. Per le icone SVG in CSS, è possibile utilizzare filter: invert(1) come rapida approssimazione.

Variabili di tema con ambito limitato

È anche possibile limitare l'ambito delle variabili CSS a singoli componenti definendole sull'elemento radice del componente anziché su :root. Questo consente di applicare temi specifici ai componenti, ad esempio una barra laterale con un proprio token per lo sfondo, diverso da quello della pagina, mantenendo comunque il corretto cambio con il toggle globale del tema.

Debug delle variabili CSS nei DevTools

Chrome DevTools mostra i valori risolti delle variabili CSS nel pannello Styles. Fare clic sul riferimento alla variabile per passare alla sua definizione. In questo modo è facile verificare che il token chiaro o scuro corretto venga applicato a un elemento. È anche possibile modificare i valori delle variabili direttamente nel pannello.

Proprietà personalizzate CSS per la gestione dei temi

Quale selettore CSS viene utilizzato per definire le proprietà personalizzate CSS globali applicate all'intero documento?

Riepilogo della lezione: variabili CSS per il cambio di tema

Le proprietà personalizzate CSS su :root forniscono un sistema centralizzato di token per i temi. Modificare un attributo data-theme sull'elemento html per cambiare immediatamente tema. Aggiungere transizioni CSS per un'animazione fluida, utilizzare la media query prefers-color-scheme come fallback esclusivamente CSS ed evitare override degli stili tramite JS a livello dei singoli componenti.

Domande Frequenti

La lezione «Variabili CSS per cambiare tema» è gratuita?

Sì — il testo completo di «Variabili CSS per cambiare tema» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Variabili CSS per cambiare tema»?

Definire una palette di colori completa con proprietà personalizzate CSS e cambiare tema alternando un attributo data Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Variabili CSS per cambiare tema»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Rilevare lo schema colori del sistema
  2. Variabili CSS per cambiare tema
  3. React Context per lo stato del tema
  4. Persistenza del tema e prevenzione del flash
← Torna a React Academy