MotionNumber · MotionText
Un număr ale cărui cifre se rotesc ca niște roți, inclusiv cifrele care apar sau dispar.
WebReact NativeNumere și text
Încercați
Se pregătește exemplul…
Cea mai scurtă utilizare
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>Ce rezolvă în locul dumneavoastră
- Transporturi:
999 → 1,000rotește fiecare cifră schimbată în același sens, ca un odometru. - Cifrele care apar sau dispar intră sau ies rotindu-se din propria coloană, în loc să apară brusc.
- Separatoarele, semnele și simbolurile monetare apar și se estompează odată cu cifra căreia îi aparțin.
- Cifrele rămase alunecă spre noile poziții în timp ce se rotesc, așa că numărul nu se desparte niciodată.
- O valoare nouă în mijlocul unei mișcări continuă exact de la ce e pe ecran.
- Formatarea nu cere niciodată
Intl: transmiteți text sau o funcțieformat, ori activați-o cuintl.
Folosiți-o pentru
- Totalul unui coș care se schimbă pe măsură ce se adaugă produse.
- Un contor sau un scor live.
- O cifră de tablou de bord care se reîmprospătează la câteva secunde.
Props
MotionNumber
| Prop | Tip | Implicit | Descriere |
|---|---|---|---|
value | number | bigint | string | —obligatoriu | Numărul sau un text numeric formatat de apelant. |
mode | 'replace' | 'roll' | 'replace' | replace mută fiecare cifră schimbată cu un pas; roll trece prin cifrele intermediare. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto urmează schimbarea de mărime, ca transporturile să se rotească într-un singur sens; digit compară fiecare cifră separat. |
stagger | number | 45 | Milisecunde între cifrele schimbate, de la unități spre exterior. Întreaga undă este limitată. |
format | (value) => string | Intl.NumberFormatOptions | O funcție care returnează textul de afișat sau opțiuni Intl.NumberFormat (cu intl). | |
intl | boolean | false | Folosește Intl.NumberFormat integrat. Dezactivat implicit, ca niciun mediu de rulare să nu aibă nevoie de Intl. |
locale | string | string[] | Localizarea pentru intl. | |
prefix | string | Text înaintea numărului. | |
suffix | string | Text după număr. | |
transition | Transition | spring | O curbă timing { duration, easing } sau un arc { tempo: 'spring', spring }. Arcurile își păstrează impulsul când sunt întrerupte. |
onMotionComplete | (value) => void | Rulează cu valoarea după ce cifrele s-au așezat. |
MotionText
| Prop | Tip | Implicit | Descriere |
|---|---|---|---|
children | ReactNode | Textul de afișat. | |
as | element | 'span' | Elementul de randat. |
transition | Transition | spring | O curbă timing { duration, easing } sau un arc { tempo: 'spring', spring }. Arcurile își păstrează impulsul când sunt întrerupte. |
onMotionComplete | (text) => void | Rulează când mișcarea se așază. |
Celelalte props merg la elementul randat, așa că className, style și handlerele de evenimente funcționează ca de obicei.
Web și React Native
Pe web, fiecare cifră este un mic teanc de glife redat de Web Animations API, iar textul rămâne selectabil. MotionText animă orice text: textul numeric se rotește pe cifre, celălalt text se schimbă.
În React Native, numărul rămâne un Text real pentru layout, selecție și accesibilitate, inclusiv încadrarea pe rânduri și numberOfLines; glifele se mișcă pe driverul nativ.
Folosită în aceste exemple
- Rezumatul comenziiCantitățile, totalurile pe rând și totalul se rotesc când se schimbă coșul; notificarea de cupon intră și pleacă; plata cere o apăsare lungă deliberată.
MotionListMotionNumberMotionPresenceMotionHold - InboxFile de filtrare cu contoare live, rânduri care pot fi glisate deoparte și o listă care închide golul.
MotionHighlightMotionListMotionSwipeMotionNumber