MotionHighlight
Tabs, Segmented Controls oder Navigation aus Daten, mit einer Hervorhebung, die zur Auswahl wandert.
WebReact NativeAuswahl und Blättern
Ausprobieren
Beispiel wird vorbereitet…
Kürzeste Nutzung
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Was sie dir abnimmt
- Eine Hervorhebung bewegt sich zwischen den Elementen und passt ihre Größe an; gestalte sie mit
highlightClassName. - Elemente kommen aus
items, Keys ausgetKeyund Beschriftungen ausrenderItem. hoverlässt sie dem Zeiger folgen und zur Auswahl zurückkehren.- Elemente können auf mehrere Zeilen umbrechen, und die Hervorhebung folgt ihnen.
- Das Laden von Schriften und Layoutänderungen werden automatisch neu gemessen.
Gut für
- Seiten-Tabs.
- Eine Filterleiste.
- Ein Segmented Control in einem Einstellungsformular.
props
| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
items | readonly T[] | —erforderlich | Dein Daten-Array. |
value | key | null | —erforderlich | Key des hervorgehobenen Elements; null blendet die Hervorhebung aus. |
onValueChange | (key, item) => void | Läuft mit Key und Element, wenn ein Element gedrückt wird. | |
getKey | (item) => string | number | item.id | Gibt einen eindeutigen, stabilen Key für ein Element zurück. Standard ist item.id oder bei Strings und Zahlen das Element selbst. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Zeichnet ein Element; erhält, ob es ausgewählt ist. |
hover | boolean | false | Dem Zeiger über Elemente folgen und beim Verlassen zu value zurückkehren (Web). |
itemAs | element | 'button' | Das Element für jeden Eintrag. |
itemClassName | string | Klasse für jedes Eintragselement; itemStyle setzt seinen Inline-Style. | |
highlightClassName | string | Klasse für die Hervorhebung; highlightStyle setzt ihren Inline-Style. | |
transition | Transition | spring | Eine Timing-Kurve { duration, easing } oder eine Feder { tempo: 'spring', spring }. Federn behalten bei Unterbrechung ihren Schwung. |
Weitere props gehen an das gerenderte Element, also funktionieren className, style und Event-Handler wie gewohnt.
Web und React Native
Jedes Element wird standardmäßig als button gerendert (itemAs ändert das); ein Druck ruft onValueChange(key, item) auf.
Unter React Native sind Elemente Pressables; die Position läuft auf dem nativen Treiber, die Größe auf einer verschachtelten, per JavaScript gesteuerten View.
Verwendet in diesen Beispielen
- PosteingangFilter-Tabs mit Live-Zählern, Zeilen zum Wegwischen und eine Liste, die die Lücke schließt.
MotionHighlightMotionListMotionSwipeMotionNumber - Foto-FeedDurch Fotos wischen, mit Vorschaubildern springen, jedes Foto im Vollbild öffnen und seine Details hochziehen.
MotionPagerMotionHighlightMotionZoomMotionSheet