Alle Komponenten

MotionSheet

Ein Bottom Sheet, Top Sheet oder seitliche Schublade mit Rastpunkten, Flicks und Übergabe ans Scrollen.

WebReact NativeOverlays

Ausprobieren

Beispiel wird vorbereitet…

Kürzeste Nutzung

Filters.jsx
<MotionSheet open={open} onOpenChange={setOpen} detents={[0.45, 0.92]}>
  <FilterList />
</MotionSheet>;

Was sie dir abnimmt

  • Folgt dem Ziehen, bietet hinter dem größten Rastpunkt Widerstand und kommt mit deinem Loslass-Tempo zur Ruhe; ein Flick bewegt es um einen Rastpunkt oder schließt es.
  • Touch-Ziehen geht an scrollbaren Inhalt über: Runterziehen scrollt den Inhalt erst nach oben, bevor sich das Sheet bewegt.
  • Rastpunkte als Bruchteil des Bildschirms, in Pixeln oder 'content' für die natürliche Größe des Inhalts.
  • Ein modales Sheet hält den Fokus innen, macht die Seite inaktiv und schließt mit Escape oder dem Hintergrund.

Gut für

  • Ein Filter-Panel.
  • Ein Teilen-Menü.
  • Eine Navigationsschublade mit side="start".

props

PropTypStandardBeschreibung
openbooleanfalseOb das Sheet angezeigt wird.
onOpenChange(open) => voidLäuft mit false, wenn das Sheet per Ziehen, Tippen oder Escape geschlossen wird.
detents(number | 'content')[]['content']Ruhegrößen: ein Bruchteil des Bildschirms, Pixel oder 'content'.
detentnumberKontrollierter Rastpunkt-Index.
defaultDetentnumber0Rastpunkt-Index beim Öffnen ohne detent.
onDetentChange(index) => voidLäuft mit dem Index des Rastpunkts, an dem das Sheet zur Ruhe kommt.
side'bottom' | 'top' | 'start' | 'end''bottom'Die Kante, von der das Sheet kommt.
modalbooleantrueFügt einen Hintergrund hinzu, hält den Fokus innen und macht die Seite inaktiv.
dismissiblebooleantrueZiehen über den kleinsten Rastpunkt hinaus, der Hintergrund und Escape schließen es.
backdropClassNamestringKlasse für den Hintergrund; backdropStyle setzt seinen Inline-Style.
transitionTransitionspringEine 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

Im Web ist ein modales Sheet ein natives dialog; das Panel ist eine Flex-Spalte, die du mit className gestaltest.

Unter React Native rendert es in einem transparenten Modal, und die Zurück-Taste schließt es. Innere ScrollViews behalten ihre eigenen Gesten, daher wird das Sheet an Griff, Kopfzeile und anderen festen Bereichen gezogen.

Verwendet in diesen Beispielen

Suchen

Tippe, um die Dokumentation zu durchsuchen.