Navigation menu
Seitennavigation mit Dropdowns oder einem Panel in voller Breite, das offen bleibt, während der Inhalt zwischen Menüs gleitet.
pnpm dlx shadcn@latest add https://hextaui.com/r/navigation-menu.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 @tabler/icons-react class-variance-authority cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/navigation-menu.tsx lib/motion.ts Passe die Importpfade an dein Projekt-Setup an.
Mit variant="panel" überspannt eine Karte die ganze Leiste. Beim Wechsel zwischen Triggern bleibt sie offen und an Ort und Stelle: Nur der Inhalt gleitet in die Richtung, in die du dich bewegt hast, und die Höhe passt sich sanft an. Nichts schließt, öffnet neu oder springt.
Dropdown
Die Standardvariante dropdown öffnet unter jedem Trigger eine Karte. Beim Wechsel zum nächsten Trigger gleitet dieselbe Karte hinüber und passt ihre Größe dem neuen Inhalt an.
Aktuelle Seite
Links in der Leiste sehen aus wie Trigger. Markiere die aktuelle Seite mit active, das auch aria-current="page" setzt.
Rechts nach links
Inhalte gleiten in die Richtung, in die du dich bewegst, die sich in rechts-nach-links-Layouts umkehrt.
| Taste | Aktion |
|---|---|
| Tab | Bewegt sich durch die Leiste und von einem offenen Trigger in seinen Inhalt. |
| EnterSpace | Öffnet oder schließt das Menü des fokussierten Triggers. |
| ↑↓ | Wechselt zwischen Links im offenen Inhalt. |
| ←→ | Wechselt zwischen Triggern in der Leiste. |
| Esc | Schließt das Menü und gibt den Fokus an seinen Trigger zurück. |
- Das Root rendert ein
<nav>. Gib ihm einaria-label, wenn die Seite mehr als eines hat. - Trigger sind Buttons, die melden, ob ihr Menü offen ist, und der Fokus kehrt zu ihnen zurück, wenn das Menü schließt.
- Das Gleiten des Inhalts und das gleitende Highlight werden bei reduzierter Bewegung zu Fades.
| Prop | Typ | Standard |
|---|---|---|
variantdropdown öffnet unter jedem Trigger. panel öffnet eine Karte in voller Breite unter der Leiste, die stehen bleibt, während der Inhalt gleitet. | "dropdown" | "panel" | "dropdown" |
showSafeAreaZeichnet den sicheren Bereich, der ein Menü offen hält, während der Zeiger hineinfährt. Für Debugging und Demos. | boolean | false |
align | "start" | "center" | "end" | "start", or "center" for panel |
sideOffset | number | 8 |
value | any | – |
defaultValue | any | – |
onValueChange | (value, details) => void | – |
delayWartezeit vor dem Öffnen bei Hover, in ms. | number | 50 |
closeDelayWartezeit vor dem Schließen, nachdem der Zeiger weggegangen ist, in ms. | number | 50 |
orientation | "horizontal" | "vertical" | "horizontal" |
| Attribut | Beschreibung |
|---|---|
data-slot="navigation-menu" | Die Navigation, mit data-variant. |
data-slot="navigation-menu-highlight" | Der Hintergrund, der zwischen offenen Triggern gleitet. |
data-slot="navigation-menu-popup" | Die Karte. Ihre Höhe läuft über --popup-height. |
| Attribut | Beschreibung |
|---|---|
data-slot="navigation-menu-trigger" | Trigger in CSS ansprechen. |
data-popup-open | Vorhanden, solange sein Menü offen ist. Das Chevron dreht sich um. |
| Attribut | Beschreibung |
|---|---|
data-slot="navigation-menu-content" | Der Inhalt eines Menüs, mit data-variant. |
data-activation-direction | "left", "right", "up" oder "down": wo der vorherige Trigger war. Steuert das Gleiten. |
--navigation-menu-link-radius | Eckenradius des Links, konzentrisch zur Karte. |
| Prop | Typ | Standard |
|---|---|---|
activeMarkiert die aktuelle Seite. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <a> |
| Attribut | Beschreibung |
|---|---|
data-slot="navigation-menu-link" | Links per CSS ansprechen. In der Leiste passen sie sich in der Größe an Trigger an. |
data-active | Vorhanden auf der aktuellen Seite. |
- MotionDie Easing-Kurven, Dauern und der Reduced-Motion-Check, mit denen jede Komponente animiert, plus Hooks für Größen-Morphs und gleitende Hervorhebungen.
- BreadcrumbEine Linkspur zur aktuellen Seite, die sicher umbricht, sich in Right-to-left-Layouts spiegelt und eingeklappte Segmente an Ort und Stelle erweitert.
- PaginationSeitennavigation, die jeden Button an seinem Platz hält, zur aktuellen Seite gleitet und über die Auslassungspunkte zu jeder Seite springt.
- SidebarEine App-Seitenleiste, die zu Icons oder off-canvas einklappt, unter deinem Header fixiert bleibt und auf Smartphones zu einem wischbaren Sheet wird.
- TabsWechsle zwischen Ansichten mit einem Indikator, der zum aktiven Tab gleitet, als Segmented Control oder Unterstrich, und Listen, die bei Überlauf scrollen.