Guider · 08
Prestanda och uppspelning
Hur Animated undviker arbete varje bildruta, hur du kontrollerar vilken väg ett element använder och hur siffrorna på startsidan mättes.
Tre uppspelningsvägar
Animated väljer en väg per egenskap. API:t ändras inte med vägen.
| Väg | När | Arbete per bildruta |
|---|---|---|
| browser | Ändlig transform- och opacity-rörelse på Animated.<tag>-element, fjädrar inräknade | Inget i sidans JavaScript |
| css | Exakta kurvor som webbläsaren kan uttrycka med delade CSS-keyframes | Inget i sidans JavaScript |
| js | Vanliga style-variabler, inmatning, egna beräkningar och sekvensgränser | En skrivning per värde, ingen React-rendering |
Ett värde, många element
Härledningar av ett hookvärde är calc()-uttryck. Med scope styr en variabelskrivning per bildruta varje element i containern.
Förbereder exemplet…
Kontrollera vägen
inspect(element) returnerar drivern och fallback-orsaken för varje animerad egenskap under en riktig körning.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsStartar från första bildrutan
När uppgiften som startar en rörelse håller huvudtråden upptagen, som hydrering eller en stor commit, startar rörelsen om när det arbetet är klart i stället för att se redan påbörjad ut. En start på en dold sida slutförs i bakgrunden.
Så mättes siffrorna på startsidan
Varje scenario kördes på en ny sida efter en uppvärmning, med tre registrerade mätningar, och medianen redovisas. JavaScript-tid är tiden i animation frame-callbacks medan rörelsen pågår. Den utesluter style, layout och paint, som webbläsaren gör med alla metoder, så den är inget mått på total CPU eller bildfrekvens.
Webbläsaruppspelning gör inte layout, paint, compositing eller minne gratis. Mät den riktiga skärmen på de enheter du stöder.
| Scenario | Uppställning | 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