CSS-variabler för temaväxling
Definiera en komplett färgpalett med anpassade CSS-egenskaper och växla tema genom att ändra ett data-attribut.
CSS-variabler för temaväxling är en gratis lektion i React Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.
Definiera färgtokens på :root
CSS-anpassade egenskaper (variabler) som definieras på :root är globalt tillgängliga i hela stilmallen. Definiera en komplett färgpalett en gång — bakgrunder, textfärger, ytor och kantlinjer — och referera till den överallt. Denna enda sanningskälla gör det enkelt att byta tema.
Överskridningar för mörkt tema med data-theme
När attributet data-theme="dark" har angetts på document.documentElement skriver en CSS-selektor som [data-theme='dark'] över rotvariablerna med mörka värden. Komponenter refererar till var(--color-bg) och hämtar automatiskt de nya värdena utan några kodändringar.
Viktiga variabler att definiera
Definiera åtminstone följande: --color-bg (sidbakgrund), --color-text (primärtext), --color-primary (varumärkesfärg), --color-surface (bakgrund för kort/paneler) och --color-border (avdelare). En konsekvent uppsättning tokens hindrar tillfälliga färgvärden från att dyka upp i komponenter.
Tillämpa variabler i komponentstilar
Referera till variabler i komponentens CSS, till exempel background: var(--color-bg) och color: var(--color-text). Ni kan också ange ett reservvärde: var(--color-bg, #ffffff). Webbläsaren löser variabeln vid målning, så en enda klass fungerar för både ljusa och mörka teman.
Mjuk övergång vid byte
Lägg till transition: background-color 200ms, color 200ms i selektorn :root. När attributet data-theme ändras animeras alla element som använder CSS-variabler samtidigt till sina nya värden. Det ger ett genomarbetat intryck utan någon JS-kod för animering.
CSS-variabler kontra JS-styrda inline-stilar
Att hantera temat med CSS-variabler är bättre än att ange inline-stilar från JavaScript. Webbläsaren hanterar alla omberäkningar av stilar inbyggt, inga extra React-omrenderingar utlöses för varje tematiserad underordnad komponent och CSS-cascaden hanterar arv automatiskt. JavaScript behöver bara växla ett attribut på rotelementet.
Reservlösning på operativsystemsnivå med prefers-color-scheme
Ni kan kombinera CSS-variabler med frågan @media (prefers-color-scheme: dark) som en reservlösning enbart med CSS. Definiera Era mörka överskridningar i mediefrågan utöver (eller i stället för) selektorn data-theme. Då fungerar mörkerläget även om JavaScript ännu inte har körts.
Kombinera data-theme med mediefrågans reservlösning
Det mest robusta tillvägagångssättet kombinerar båda mekanismerna: @media-frågan tillhandahåller operativsystemets standard, medan ett data-theme-attribut gör det möjligt för användaren att skriva över temat via JavaScript. När attributet finns vinner det tack vare specificiteten; när det saknas används mediefrågan.
Bilder i mörkerläge
För bilder som ser dåliga ut mot mörka bakgrunder kan Ni använda HTML-elementet picture med ett underordnat source media="(prefers-color-scheme: dark)". Webbläsaren väljer automatiskt den mörka varianten. För SVG-ikoner i CSS kan Ni använda filter: invert(1) som en snabb approximation.
Temavariabler med begränsad omfattning
CSS-variabler kan också begränsas till enskilda komponenter genom att definiera dem på komponentens rotelement i stället för på :root. Det möjliggör tematisering per komponent, till exempel ett sidofält med en egen bakgrundstoken som skiljer sig från sidans bakgrund, samtidigt som allt fortfarande växlar korrekt med den globala temaväxlingen.
Felsöka CSS-variabler i DevTools
Chrome DevTools visar beräknade CSS-variabelvärden i panelen Styles. Klicka på variabelreferensen för att hoppa till dess definition. Då blir det enkelt att kontrollera att rätt mörka eller ljusa token tillämpas på ett element. Ni kan också redigera variabelvärden direkt i panelen.
CSS-anpassade egenskaper för tematisering
Vilken CSS-selektor används för att definiera globala CSS-anpassade egenskaper som gäller för hela dokumentet?
Lektionssammanfattning: CSS-variabler för temabyte
CSS-anpassade egenskaper på :root tillhandahåller ett centraliserat tokensystem för teman. Växla ett data-theme-attribut på html-elementet för att byta tema direkt. Lägg till CSS-övergångar för mjuk animering, använd mediefrågan prefers-color-scheme som en reservlösning enbart med CSS och undvik JS-överskrivningar av stilar per komponent.
Lär dig React med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 88
- Lektioner
- 324
Vanliga frågor
Är lektionen ”CSS-variabler för temaväxling” gratis?
Ja – hela texten till ”CSS-variabler för temaväxling” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”CSS-variabler för temaväxling”?
Definiera en komplett färgpalett med anpassade CSS-egenskaper och växla tema genom att ändra ett data-attribut. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig React Academy?
Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”CSS-variabler för temaväxling”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här React Academy-lektionen?
Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Identifiera systemets färgschema
- CSS-variabler för temaväxling
- React Context för temats tillstånd
- Spara tema och förhindra bildflimmer