L’animation pour React DOM · API Animated de React Native
Écrivez l’animation une fois. Elle est fluide, et ne casse jamais.
Animated apporte l’Animated de React Native sur le web. Une valeur anime autant d’éléments que vous voulez sans rendu React à chaque image, les mouvements pris en charge sont joués par le navigateur lui-même, et chaque interruption repart de ce qui est à l’écran.
npm install @kkwaenggwari/animatedUne valeur d’horloge anime l’onde des 64 formes. Passez le pointeur sur la scène.
Mesuré sur cette version
Mesuré avec le build 1.0.0 dans Chrome headless sur un PC de bureau. Les chiffres varient selon l’appareil. Méthode de mesure
- 0.00msJavaScript par image pendant que 400 éléments bougent
Les mouvements finis de transform et opacity sur les éléments Animated sont joués par le navigateur. Les callbacks d’image de la page ne font aucun travail.
- 0.13msJavaScript par image pour une valeur qui anime 10 000 éléments
La valeur écrit une variable CSS ; chaque élément en dérive son style en CSS.
- 0Rendus React pendant le mouvement
Les valeurs ne passent jamais par l’état React. Les composants se rendent quand vos props changent, pas quand une image change.
01 · Simple
L’API que vous connaissez, sur le style React ordinaire
timing, spring, interpolate, loop et Animated.event gardent leurs noms et leurs options de React Native. Une valeur se place directement dans une prop style ordinaire : aucun composant spécial à apprendre avant votre première animation.
- Portez du code React Native en renommant
Animated.ViewenAnimated.div. - Une seule valeur peut animer à la fois une barre, un cadran et une rangée de cartes, chacun avec sa propre plage.
useAnimatedgère la recette : elle démarre au montage, redémarre quand une dépendance change et se nettoie au démontage.
Préparation de l’exemple…
Les mêmes appels que dans React Native
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />
// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />
const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });
Animated.loop(
Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();02 · Rapide
Aucun rendu React à chaque image
Une valeur de hook est une variable CSS. Les interpolations linéaires et l’arithmétique deviennent des expressions calc() exactes de cette variable : chaque image se résume à une écriture, le navigateur dérive le reste. Les mouvements finis de transform et opacity sur les éléments Animated.<tag> sont joués par le navigateur sans callback d’image.
- Changez le nombre de points : le compteur montre que React s’est rendu une fois par changement, jamais à chaque image.
scopeécrit la valeur une fois sur un conteneur au lieu de l’écrire sur chaque élément.inspect(element)vous indique quel chemin chaque propriété utilise, et pourquoi.
Préparation de l’exemple…
03 · Stable
Interrompez-le n’importe où. Il continue.
Une nouvelle cible part de la position de l’élément à l’écran, et un ressort conserve aussi sa vitesse : inverser en plein vol tourne en douceur au lieu de s’arrêter d’abord. Les contrôleurs déclarés dans un hook sont arrêtés et libérés au remplacement et au démontage, et le balisage rendu côté serveur continue de s’animer après l’hydratation.
- Cliquez deux fois rapidement : avec
spring, la trajectoire s’infléchit ; avectiming, la position est conservée mais une nouvelle courbe commence. - L’arrêt laisse la valeur là où elle est ; rien ne saute à un état final.
- Aucune boucle d’images orpheline après un démontage, un changement de route ou un onglet masqué.
Préparation de l’exemple…
Ce que vous pouvez construire
Des patterns complets, avec des réglages ajustables et tout le code source.
Tous les exemples- Dock magnétiqueLes icônes grossissent au passage du pointeur, écartent leurs voisines et se reposent quand il s’en va.
moveInputfollowuseAnimatedCSSmultiply - Pile à balayerFaites glisser la carte du dessus. Au-delà du seuil, elle s’envole ; sinon, elle revient avec un ressort.
dragInputuseAnimatedListenerAnimated.div - Galerie partagéeUne vignette s’agrandit en vue détaillée puis se rétracte dans la grille.
Animated.SceneAnimated.Keepmove
Construit avec Animated
Besoin d’un composant prêt à l’emploi ? Animated Chorus.
Chiffres qui défilent, surlignages d’onglets qui se déplacent, progression, panneaux et listes animées, à intégrer directement dans React et React Native. Ces trois-là tournent sur cette page en ce moment.
Découvrir Animated ChorusDémarrer en trois minutes
Installez le paquet, animez votre première valeur, puis choisissez un guide pour la tâche qui vous attend.
npm install @kkwaenggwari/animated