MotionNumber · MotionText
Eine Zahl, deren Stellen wie Räder rollen – auch Stellen, die hinzukommen oder wegfallen.
WebReact NativeZahlen und Text
Ausprobieren
Beispiel wird vorbereitet…
Kürzeste Nutzung
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>Was sie dir abnimmt
- Überträge:
999 → 1,000lässt jede geänderte Stelle in dieselbe Richtung rollen, wie bei einem Kilometerzähler. - Stellen, die hinzukommen oder wegfallen, rollen in ihrer eigenen Spalte herein und hinaus, statt aufzuploppen.
- Trennzeichen, Vorzeichen und Währungssymbole blenden mit der Stelle ein und aus, zu der sie gehören.
- Verbleibende Stellen gleiten an ihre neue Position, während sie rollen – die Zahl bricht nie auseinander.
- Ein neuer Wert mitten in der Bewegung setzt genau dort an, was auf dem Bildschirm ist.
- Formatierung braucht nie
Intl: Übergib Text oder eineformat-Funktion, oder aktiviere es mitintl.
Gut für
- Eine Warenkorbsumme, die sich beim Hinzufügen von Artikeln ändert.
- Ein Live-Zähler oder Spielstand.
- Eine Dashboard-Zahl, die sich alle paar Sekunden aktualisiert.
props
MotionNumber
| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
value | number | bigint | string | —erforderlich | Die Zahl oder vom Aufrufer formatierter Zahlentext. |
mode | 'replace' | 'roll' | 'replace' | replace bewegt jede geänderte Stelle um einen Schritt; roll läuft durch die Ziffern dazwischen. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto folgt der Größenänderung, sodass Überträge in eine Richtung rollen; digit vergleicht jede Stelle für sich. |
stagger | number | 45 | Millisekunden zwischen geänderten Stellen, von den Einern nach außen. Die gesamte Welle ist begrenzt. |
format | (value) => string | Intl.NumberFormatOptions | Eine Funktion, die den anzuzeigenden Text zurückgibt, oder Intl.NumberFormat-Optionen (mit intl). | |
intl | boolean | false | Nutzt das eingebaute Intl.NumberFormat. Standardmäßig aus, damit keine Laufzeitumgebung Intl braucht. |
locale | string | string[] | Locale für intl. | |
prefix | string | Text vor der Zahl. | |
suffix | string | Text nach der Zahl. | |
transition | Transition | spring | Eine Timing-Kurve { duration, easing } oder eine Feder { tempo: 'spring', spring }. Federn behalten bei Unterbrechung ihren Schwung. |
onMotionComplete | (value) => void | Läuft mit dem Wert, sobald die Stellen zur Ruhe gekommen sind. |
MotionText
| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
children | ReactNode | Der anzuzeigende Text. | |
as | element | 'span' | Das zu rendernde Element. |
transition | Transition | spring | Eine Timing-Kurve { duration, easing } oder eine Feder { tempo: 'spring', spring }. Federn behalten bei Unterbrechung ihren Schwung. |
onMotionComplete | (text) => void | Läuft, wenn die Bewegung zur Ruhe kommt. |
Weitere props gehen an das gerenderte Element, also funktionieren className, style und Event-Handler wie gewohnt.
Web und React Native
Im Web ist jede Stelle ein kleiner Glyphen-Stapel, den die Web Animations API abspielt, und der Text bleibt markierbar. MotionText animiert beliebigen Text: Zahlentext rollt pro Stelle, anderer Text wird ausgetauscht.
Unter React Native bleibt die Zahl ein echtes Text für Layout, Auswahl und Barrierefreiheit, inklusive Umbruch und numberOfLines; die Glyphen bewegen sich mit dem nativen Treiber.
Verwendet in diesen Beispielen
- Checkout-ÜbersichtMengen, Zeilensummen und die Gesamtsumme rollen, wenn sich der Warenkorb ändert; der Gutscheinhinweis erscheint und verschwindet; Bezahlen erfordert bewusstes Halten.
MotionListMotionNumberMotionPresenceMotionHold - PosteingangFilter-Tabs mit Live-Zählern, Zeilen zum Wegwischen und eine Liste, die die Lücke schließt.
MotionHighlightMotionListMotionSwipeMotionNumber