React Academy · Lektion

CSS-overgange ved ændringer i React-state

Udløs CSS-overgange ved at skifte class names med React-state – overgange for opacity, transform og farve.

Lektion 1 af 413 trin

CSS-overgange ved ændringer i React-state er en gratis React Academy-lektion på CoddyKit. Dette er lektion 1 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.

Hvad er en CSS-overgang

En CSS transition interpolerer jævnt en egenskab mellem to værdier over tid i stedet for at skifte øjeblikkeligt. Du erklærer den på elementet med transition: property duration timing-function delay.

I React animerer du normalt ikke inline-værdier manuelt. I stedet skifter du en klasse eller stil med tilstand, og CSS håndterer de mellemliggende billeder for dig.

Udløsning af en overgang ved at skifte en klasse

Det almindelige mønster er at gemme en boolesk værdi i useState og skifte CSS-klasse, når den ændres. Når klassen ændres, får den berørte egenskab en ny værdi, og CSS animerer forskellen.

For eksempel styrer isOpen, om elementet har klassen open, og klassen open angiver en anden højde eller transformering.

En boolesk isVisible-tilstand

En typisk opsætning er const [isVisible, setIsVisible] = useState(false). En knap kalder setIsVisible(v => !v) for at skifte værdien.

Ved at bruge den funktionelle opdatering v => !v undgår du forældet tilstand, når flere opdateringer sættes i kø, så skiftet forbliver pålideligt.

Betinget klasse med skabelonstrenge

Du opbygger className dynamisk: className={'panel ' + (isVisible ? 'panel--shown' : 'panel--hidden')}. Grundklassen indeholder overgangserklæringen, mens modifikatorklasserne indeholder start- og slutværdierne.

Når du beholder transition på den altid tilstedeværende grundklasse, kører animationen i begge retninger, både ved åbning og lukning.

Animering af transform og opacity sammen

Du kan animere flere egenskaber på én gang ved at angive dem i en liste: transition: transform 300ms ease, opacity 300ms ease. En indtoning med glidning kombinerer en ændring af opacity med en translateY på transform.

Ved at animere begge dele sammen får du en poleret indgang, hvor elementet glider op, mens det toner ind.

Forskudt animering med transition-delay

transition-delay udsætter starten på en overgang. Ved at give listeelementer stigende forsinkelser skaber du en forskudt kaskade, hvor hvert element animeres en smule efter det foregående.

I React kan du beregne forsinkelsen inline, for eksempel style={{ transitionDelay: index * 50 + 'ms' }}.

Hvorfor display ikke kan animeres

Egenskaben display kan ikke animeres, fordi den ikke har mellemliggende værdier mellem none og block. En overgang af den giver et øjeblikkeligt spring i stedet for en indtoning.

Animer i stedet opacity for den visuelle indtoning, og skift pointer-events: none, så det skjulte element ignorerer klik, mens det er usynligt.

Tidsfunktioner

Tidsfunktionen bestemmer, hvordan hastigheden ændrer sig over varigheden. linear bevæger sig med konstant hastighed, ease starter og slutter langsomt, og cubic-bezier(...) lader dig definere en helt tilpasset kurve.

Tilpassede kurver er gode til en kontant eller elastisk fornemmelse, for eksempel cubic-bezier(0.34, 1.56, 0.64, 1) for en let overskridelse.

CSS-variabler til varighed

Du kan gemme varigheder i tilpassede CSS-egenskaber som --speed: 300ms og genbruge dem: transition: opacity var(--speed) ease. Det holder timingen ensartet på tværs af komponenter.

React kan endda sætte variablen inline via style={{ '--speed': '500ms' }}, så egenskaber kan styre animationens timing.

Foretræk transform og opacity af hensyn til ydeevnen

Browsere kan animere transform og opacity på GPU-compositoren uden at genberegne layoutet eller tegne det igen. Animering af egenskaber som width, top eller margin tvinger browseren til at udføre layoutarbejde for hvert billede og kan give hakken.

Når du skal flytte, skalere eller rotere, skal du bruge transform; når du skal tone ind eller ud, skal du bruge opacity.

Sæt det hele sammen

En pålidelig overgang i React kombinerer en boolesk tilstand, en betinget modifikatorklasse og en grundklasse, der angiver transition på GPU-venlige egenskaber. Tilstanden skifter klassen, og CSS står for animationen.

Det holder dine komponenter deklarative, samtidig med at browseren udnyttes til at skabe jævne bevægelser.

Hurtigt tjek

Test din forståelse af effektiv animation.

Opsummering

Du har lært at udløse CSS-overgange ved at skifte tilstandsbaserede klasser, animere transform og opacity sammen, forskyde animationer med forsinkelser og undgå at animere display ved at bruge opacity kombineret med pointer-events.

Du har også set tidsfunktioner, varigheder via CSS-variabler og lært, hvorfor GPU-sammensatte egenskaber holder bevægelser jævne.

Gratis at komme i gang

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-overgange ved ændringer i React-state” gratis?

Ja — hele teksten til “CSS-overgange ved ændringer i React-state” 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-overgange ved ændringer i React-state”?

Udløs CSS-overgange ved at skifte class names med React-state – overgange for opacity, transform og farve. 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 1 af 4.

Hvor lang tid tager lektionen “CSS-overgange ved ændringer i React-state”?

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

  1. CSS-overgange ved ændringer i React-state
  2. CSS-keyframe-animationer med React
  3. Brug af useLayoutEffect til målinger før animation
  4. Ind- og udgangsanimationer uden et bibliotek
← Tilbage til React Academy