Separator
Eine Haarlinie, die Inhalte horizontal oder vertikal trennt, mit optionalem Label und einem dekorativen Modus für rein visuelle Linien.
HextaUI
Components that feel great to use and to write.
pnpm dlx shadcn@latest add https://hextaui.com/r/separator.jsonFügt die Komponente, die HextaUI-Theme-Tokens und alle HextaUI-Komponenten hinzu, von denen sie abhängt.
Füge die Theme-Tokens zu deinem globalen CSS hinzu, falls du das noch nicht getan hast.
Installiere die Abhängigkeiten.
pnpm add @base-ui/react cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/separator.tsx Passe die Importpfade an dein Projekt-Setup an.
Die Linie ist auf jedem Bildschirm ein physisches Pixel dick, dieselbe feine Linie wie Rahmen, sodass sie mit Karten und Inputs ringsum fluchtet. Setze Abstände über das gap des Elternelements oder einen Margin.
Vertikal
Mit orientation="vertical" streckt sich die Linie auf die Höhe ihrer Flex-Zeile. Außerhalb einer Flex-Zeile gib ihr eine Höhe.
Label
Kinder sitzen in der Mitte der Linie, wobei die Linie den Platz auf beiden Seiten füllt.
Ausrichtung
align verschiebt das Label ans start oder end, was zu Abschnitts- und Datumsüberschriften passt. Icons werden an den Text angepasst.
Vertikales Label
Ein vertikaler Separator mit Label hält den Text aufrecht und zeichnet die Linie darüber und darunter.
Dekorativ
decorative verbirgt eine rein visuelle Linie vor Screenreadern, damit sie zwischen Zeilen, die für sich schon gut lesbar sind, keinen Separator ansagen.
Inline
Nutze render, um ein <span> auszugeben, wo ein <div> nicht erlaubt ist, etwa in einem Absatz.
Langer Inhalt
Lange Labels umbrechen, und ununterbrochene Zeichenketten werden getrennt, während auf jeder Seite ein kurzes Stück Linie sichtbar bleibt.
Rechts nach links
Start und Ende folgen der Leserichtung.
- Ein einfacher Separator hat
role="separator"undaria-orientation, wie ein<hr>. - Mit
decorativeerhält esrole="none", und Screenreader überspringen es. - Ein Separator mit Label hat keine Rolle. Die Separator-Rolle würde seinen Text presentational machen, daher wird das Label als normaler Text gelesen.
Gebaut auf dem Base UI Separator. Rendert ein <div> und akzeptiert dessen Attribute.
| Prop | Typ | Standard |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
decorativeVerberge die Linie vor Screenreadern, wenn sie nur visuell ist. | boolean | false |
childrenEin in die Linie gezeichnetes Label. Lass es weg für eine einfache Linie. | ReactNode | – |
alignWo das Label auf der Linie sitzt. | "start" | "center" | "end" | "center" |
className | string | (state) => string | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Attribut | Beschreibung |
|---|---|
data-slot="separator" | Trennzeichen in CSS ansprechen. |
data-orientation | "horizontal" oder "vertical". |
data-content | Vorhanden, wenn der Separator ein Label hat. |
data-align | Die Ausrichtung des Labels, wenn es ein Label gibt. |
data-slot="separator-label" | Das Element, das das Label umschließt. |
- AccordionGestapelte Überschriften, die jeweils ein Panel aufklappen, mit einer Höhenbewegung, die sich mittendrin umkehren lässt, und Panels, die auch geschlossen durchsuchbar bleiben.
- Aspect ratioEine Box, die ihre Form behält, bevor Medien geladen sind, beim Laden schimmert, das Medium einblendet und bei einem Fehler auf einen Fallback zurückfällt.
- CarouselNative Scroll-Snap-Slides mit Momentum auf Touch, Maus-Ziehen, Pfeiltasten, Punkten, Thumbnails und einem Autoplay, das pausiert, wenn es soll.
- CollapsibleEin Panel, das mit einer Höhenbewegung ein- und ausgeblendet wird, die sich mittendrin umkehren lässt, ohne das Layout springen zu lassen.
- ResizablePanels, die du auseinanderziehen kannst, mit einem dezenten Trenner, der beim Hover aufwacht, Größen, die beim Zurücksetzen oder Einklappen gleiten, und Layouts, die erhalten bleiben.
- Scroll areaNatives Scrollen mit minimaler Scrollbar, Kanten, die nur dort ausblenden, wo es mehr zu sehen gibt, und einem optionalen Anschnitt, der das letzte Element halbiert.