CSS-keyframe-animationer med React
Anvend og fjern @keyframes-animationer dynamisk baseret på komponentens state og hændelser.
CSS-keyframe-animationer med React er en gratis React Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i React Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. React Academy-kurset indeholder 4 lektioner i alt.
Definition af @keyframes
En regel med @keyframes beskriver en animation i flere trin ved at angive egenskabsværdier på forskellige tidspunkter på en tidslinje ved hjælp af from/to eller procenter som 0%, 50% og 100%.
I modsætning til overgange kan keyframes beskrive komplekse bevægelser i flere trin, der kører af sig selv uden en tilstandsændring ved hvert trin.
Kortnotationen animation
Du anvender et nøglebilledesæt med egenskaben animation: animation: slideIn 400ms ease forwards. Den samler navn, varighed, tidsfunktion og udfyldningstilstand.
Udfyldningstilstanden forwards fastholder elementet ved værdierne fra det sidste nøglebillede, når animationen slutter, så det ikke springer tilbage til begyndelsen.
Anvendelse af en animationsklasse via tilstand
I React tilføjer du typisk en klasse, der indeholder animation-erklæringen, når tilstanden bliver sand. Hvis du for eksempel tilføjer is-entering, starter nøglebillederne, så snart elementet monteres, eller et flag skifter.
Det holder animationslogikken i CSS, mens React blot bestemmer, hvornår klassen skal tilføjes.
animation-fill-mode
animation-fill-mode bestemmer, hvilke stilegenskaber der gælder før og efter animationen kører. forwards bevarer det sidste nøglebillede, backwards anvender det første nøglebillede under en eventuel forsinkelse, og both gør begge dele.
Uden forwards ville et element, der animeres til en indtonet tilstand, springe tilbage til usynlighed, når animationen er færdig.
animation-direction alternate
animation-direction: alternate afspiller animationen fremad og derefter baglæns ved hver gentagelse. Kombineret med animation-iteration-count: infinite skaber det en jævn frem-og-tilbage-bevægelse, som en pulserende eller åndende effekt.
Det er praktisk til indlæsningsindikatorer eller diskrete bevægelser, der tiltrækker opmærksomhed.
Pause med animation-play-state
animation-play-state kan være running eller paused. Du kan styre den via React-tilstand, for eksempel sætte en løbende tekst på pause ved hover ved at skifte klasse.
Fordi animationen sættes på pause i stedet for at blive nulstillet, fortsætter den præcis fra det sted, hvor den stoppede.
Udløsning igen ved at ændre key-proppen
En keyframe-animation afspilles kun én gang, når dens klasse anvendes første gang; hvis du tilføjer den samme klasse igen, starter animationen ikke forfra. Det reneste React-trick er at ændre elementets key, så React monterer en ny node, der afspiller animationen fra begyndelsen.
Hvis du for eksempel bruger key={count} på en toast, monteres den på ny, hver gang count øges.
Respekt for prefers-reduced-motion
Nogle brugere aktiverer reduceret bevægelse i deres operativsystem af hensyn til komfort eller tilgængelighed. Pak ikke-vigtige animationer ind i @media (prefers-reduced-motion: reduce), og deaktiver eller forkort dem dér.
Når du respekterer denne indstilling, bliver din grænseflade mere inkluderende, og du undgår at udløse ubehag.
Udløsning ved rulning med IntersectionObserver
Hvis du vil animere elementer, når de kommer ind i visningsområdet, skal du bruge en IntersectionObserver i en useEffect. Når elementet bliver synligt, opdaterer du tilstanden, hvilket tilføjer animationsklassen.
Det giver effekter, hvor elementer vises ved rulning, uden tunge lyttere til rulning, der kører ved hvert billede.
Koordinering med animation-delay
animation-delay forskyder, hvornår hver keyframe-animation begynder. Hvis du giver en liste stigende forsinkelser, animeres elementerne i rækkefølge, så de vises på en koordineret måde.
Du kan beregne forsinkelsen for hvert element i React med style={{ animationDelay: i * 80 + 'ms' }}.
Keyframes kontra overgange
Brug overgange til enkle ændringer mellem to tilstande, der styres af interaktion, og keyframes, når du har brug for bevægelse i flere trin, gentagelser eller en animation, der kører uafhængigt af et tilstandsskift.
Begge dele er ren CSS, så React bestemmer kun, hvornår klasser sættes på, mens browseren håndterer billederne.
Hurtig kontrol
Test din forståelse af keyframe-adfærd.
Opsummering
Du har lært at definere @keyframes, anvende dem med genvejen animation, styre udfyldningstilstand og retning, sætte animationer på pause og udløse dem igen samt vise elementer ved rulning med IntersectionObserver.
Du har også set, hvordan du respekterer prefers-reduced-motion for at skabe tilgængelig bevægelse.
Lær React med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 88
- Lektioner
- 324
Ofte stillede spørgsmål
Er lektionen “CSS-keyframe-animationer med React” gratis?
Ja — hele teksten til “CSS-keyframe-animationer med React” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af React Academy-kurset, skal du opgradere til CoddyKit PRO. React Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “CSS-keyframe-animationer med React”?
Anvend og fjern @keyframes-animationer dynamisk baseret på komponentens state og hændelser. Du øver dig i React Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på React Academy?
Der kræves ingen tidligere erfaring. React Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “CSS-keyframe-animationer med React”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne React Academy-lektion?
Ja. Alle React Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- CSS-overgange ved ændringer i React-state
- CSS-keyframe-animationer med React
- Brug af useLayoutEffect til målinger før animation
- Ind- og udgangsanimationer uden et bibliotek