Guides · 08
Ydeevne og afspilning
Hvordan Animated undgår arbejde i hver frame, hvordan du tjekker, hvilken vej et element bruger, og hvordan tallene på forsiden blev målt.
Tre afspilningsveje
Animated vælger en vej pr. egenskab. API'et ændrer sig ikke med vejen.
| Vej | Hvornår | Arbejde pr. frame |
|---|---|---|
| browser | Endelig transform- og opacity-bevægelse på Animated.<tag>-elementer, fjedre inklusive | Intet i sidens JavaScript |
| css | Eksakte kurver, som browseren kan udtrykke med delte CSS-keyframes | Intet i sidens JavaScript |
| js | Almindelige style-variabler, input, egne beregninger og sekvensgrænser | Én skrivning pr. værdi, ingen React-rendering |
Én værdi, mange elementer
Afledninger af en hook-værdi er calc()-udtryk. Med scope styrer én variabelskrivning pr. frame alle elementer i containeren.
Forbereder eksemplet…
Tjek vejen
inspect(element) returnerer driveren og fallback-årsagen for hver animeret egenskab under en rigtig kørsel.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsStarter fra første frame
Når opgaven, der starter en bevægelse, holder hovedtråden optaget, som hydrering eller en stor commit, starter bevægelsen forfra, når det arbejde er færdigt, i stedet for at se allerede fremskreden ud. En start på en skjult side gøres færdig i baggrunden.
Sådan blev tallene på forsiden målt
Hvert scenarie kørte på en frisk side efter én opvarmning med tre registrerede målinger, og medianen rapporteres. JavaScript-tid er tiden i animation frame-callbacks, mens bevægelsen kører. Den udelader style, layout og paint, som browseren udfører med enhver tilgang, så den er ikke et mål for samlet CPU eller billedhastighed.
Browserafspilning gør ikke layout, paint, compositing eller hukommelse gratis. Mål den rigtige skærm på de enheder, du understøtter.
| Scenarie | Opsætning | Resultat |
|---|---|---|
| 400 Animated.div elements move translateX and fade in (timing, 1800 ms) | seed/pose/tempo on Animated.div; 800 browser animations | 0.00 ms |
| One useAnimated value drives 10,000 elements in ordinary style (loop, 1200 ms) | transform and opacity as calc() of one CSS variable written on a scope element | 0.13 ms |
2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K