MotionNumber · MotionText
Un nombre dont les chiffres tournent comme des roues, y compris ceux qui apparaissent ou disparaissent.
WebReact NativeNombres et texte
Essayer
Préparation de l’exemple…
Usage minimal
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>Ce qu’il gère pour vous
- Retenues :
999 → 1,000fait tourner chaque chiffre modifié dans le même sens, comme un compteur kilométrique. - Les chiffres qui apparaissent ou disparaissent entrent et sortent en roulant dans leur propre colonne au lieu de surgir.
- Séparateurs, signes et symboles monétaires apparaissent et disparaissent en fondu avec le chiffre auquel ils appartiennent.
- Les chiffres restants glissent vers leur nouvelle position pendant qu’ils défilent : le nombre ne se coupe jamais.
- Une nouvelle valeur en plein mouvement repart exactement de ce qui est à l’écran.
- Le formatage n’exige jamais
Intl: passez du texte ou une fonctionformat, ou activez-le avecintl.
À utiliser pour
- Le total d’un panier qui change à chaque ajout.
- Un compteur ou un score en direct.
- Un chiffre de tableau de bord rafraîchi toutes les quelques secondes.
Props
MotionNumber
| Prop | Type | Défaut | Description |
|---|---|---|---|
value | number | bigint | string | —obligatoire | Le nombre, ou un texte numérique déjà formaté par l’appelant. |
mode | 'replace' | 'roll' | 'replace' | replace avance chaque chiffre modifié d’un cran ; roll passe par les chiffres intermédiaires. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto suit la variation d’ordre de grandeur pour que les retenues tournent dans un sens ; digit compare chaque chiffre isolément. |
stagger | number | 45 | Millisecondes entre les chiffres modifiés, des unités vers l’extérieur. L’ondulation totale est bornée. |
format | (value) => string | Intl.NumberFormatOptions | Une fonction qui renvoie le texte à afficher, ou des options Intl.NumberFormat (avec intl). | |
intl | boolean | false | Utilise l’Intl.NumberFormat intégré. Désactivé par défaut pour qu’aucun environnement n’ait besoin d’Intl. |
locale | string | string[] | Paramètre régional pour intl. | |
prefix | string | Texte avant le nombre. | |
suffix | string | Texte après le nombre. | |
transition | Transition | spring | Une courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus. |
onMotionComplete | (value) => void | S’exécute avec la valeur une fois les chiffres posés. |
MotionText
| Prop | Type | Défaut | Description |
|---|---|---|---|
children | ReactNode | Le texte à afficher. | |
as | element | 'span' | L’élément à rendre. |
transition | Transition | spring | Une courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus. |
onMotionComplete | (text) => void | S’exécute quand le mouvement se pose. |
Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.
Web et React Native
Sur le web, chaque chiffre est une petite pile de glyphes jouée par la Web Animations API, et le texte reste sélectionnable. MotionText anime n’importe quel texte : le texte numérique défile chiffre par chiffre, le reste s’échange.
Sur React Native, le nombre reste un vrai Text pour la mise en page, la sélection et l’accessibilité, y compris le retour à la ligne et numberOfLines ; les glyphes bougent avec le driver natif.
Utilisé dans ces exemples
- Récapitulatif de commandeLes quantités, les totaux par ligne et le total défilent quand le panier change ; l’avis de code promo entre et sort ; payer demande un appui maintenu délibéré.
MotionListMotionNumberMotionPresenceMotionHold - Boîte de réceptionDes onglets de filtre avec des compteurs en direct, des lignes à balayer et une liste qui comble le vide.
MotionHighlightMotionListMotionSwipeMotionNumber