React Academy · Lektion

CSS-nyckelbildsanimationer med React

Tillämpa och ta bort @keyframes-animationer dynamiskt baserat på komponentens state och händelser.

Lektion 2 av 413 steg

CSS-nyckelbildsanimationer med React ä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 @keyframes

En @keyframes-regel beskriver en animering i flera steg genom att ange egenskapsvärden vid olika punkter längs en tidslinje, med from/to eller procenttal som 0%, 50%, 100%.

Till skillnad från transitions kan keyframes beskriva komplexa rörelser i flera steg som körs på egen hand utan en tillståndsändring vid varje steg.

Kortformen animation

Du tillämpar en keyframe-uppsättning med egenskapen animation: animation: slideIn 400ms ease forwards. Den samlar namn, varaktighet, tidsfunktion och fyllningsläge.

Fyllningsläget forwards behåller elementet vid värdena i den sista keyframen efter att animeringen är slut, vilket förhindrar ett hopp tillbaka till början.

Tillämpa en animationsklass via tillstånd

I React lägger du vanligtvis till en klass som innehåller animation-deklarationen när tillståndet blir true. Till exempel startar keyframes genom att lägga till is-entering i samma ögonblick som elementet monteras eller en flagga växlar.

Detta håller animeringslogiken i CSS, medan React bara avgör när klassen ska läggas till.

animation-fill-mode

animation-fill-mode styr vilka stilar som gäller före och efter att animeringen körs. forwards behåller den sista keyframen, backwards tillämpar den första keyframen under en eventuell fördröjning, och both gör båda sakerna.

Utan forwards skulle ett element som animeras från osynligt till synligt hoppa tillbaka till osynligt när animeringen är klar.

animation-direction alternate

animation-direction: alternate spelar animeringen framåt och sedan bakåt vid varje iteration. I kombination med animation-iteration-count: infinite skapar den en mjuk rörelse fram och tillbaka, som en pulserande eller andande effekt.

Detta är praktiskt för laddningsindikatorer eller diskreta rörelser som drar till sig uppmärksamhet.

Pausa med animation-play-state

animation-play-state kan vara running eller paused. Ni kan styra det från React-tillståndet, till exempel pausa en rullande text när pekaren förs över den genom att byta klass.

Eftersom animeringen pausas i stället för att återställas fortsätter den exakt där den stannade.

Utlösa igen genom att ändra prop-egenskapen key

En keyframe-animering spelas bara upp en gång när dess klass tillämpas första gången; att lägga till samma klass igen startar inte om den. Det renaste React-tricket är att ändra elementets key så att React monterar om en ny nod och spelar upp animeringen från början.

Om Ni till exempel använder key={count} på en toast monteras den om varje gång count ökar.

Respektera prefers-reduced-motion

Vissa användare aktiverar reducerad rörelse i operativsystemet av bekvämlighets- eller tillgänglighetsskäl. Omslut icke-nödvändiga animeringar i @media (prefers-reduced-motion: reduce) och inaktivera eller förkorta dem där.

Genom att respektera denna inställning blir gränssnittet mer inkluderande och Ni undviker att orsaka obehag.

Utlösa vid rullning med IntersectionObserver

För att animera element när de kommer in i visningsområdet använder Ni en IntersectionObserver i en useEffect. När elementet blir synligt uppdaterar Ni tillståndet, vilket lägger till animeringsklassen.

Detta skapar effekter där element visas vid rullning utan tunga rullningslyssnare som körs vid varje bildruta.

Samordna med animation-delay

animation-delay sprider ut när varje keyframe-animering börjar. Om Ni ger en lista med objekt allt längre fördröjningar animeras de i följd och skapar en koreograferad visning.

Ni kan beräkna fördröjningen för varje objekt i React med style={{ animationDelay: i * 80 + 'ms' }}.

Keyframes kontra transitions

Använd transitions för enkla ändringar mellan två tillstånd som styrs av interaktioner, och keyframes när Ni behöver rörelser i flera steg, upprepning eller en animering som körs oberoende av en tillståndsväxling.

Båda är ren CSS, så React avgör bara när klasserna kopplas till och webbläsaren hanterar bildrutorna.

Snabbtest

Testa hur väl Ni förstår hur keyframes fungerar.

Sammanfattning

Ni har lärt Er att definiera @keyframes, tillämpa dem med den förkortade egenskapen animation, styra fyllningsläge och riktning, pausa och utlösa animeringar igen samt visa element vid rullning med IntersectionObserver.

Ni har också sett hur man respekterar prefers-reduced-motion för tillgängliga rörelser.

Gratis att börja

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-nyckelbildsanimationer med React” gratis?

Ja – hela texten till ”CSS-nyckelbildsanimationer med React” 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-nyckelbildsanimationer med React”?

Tillämpa och ta bort @keyframes-animationer dynamiskt baserat på komponentens state och händelser. 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-nyckelbildsanimationer med React”?

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

  1. CSS-övergångar vid ändringar i React-state
  2. CSS-nyckelbildsanimationer med React
  3. Använd useLayoutEffect för mätningar före animering
  4. In- och utgångsanimeringar utan bibliotek
← Tillbaka till React Academy