Zum Inhalt springen
NativeCSS

Navigation

Alle Varianten nutzen dieselbe <details>/<summary>- Mechanik für Untermenüs (Klick/Tastatur, kein Hover-Problem) - siehe components/nav.css.

<nav class="ncss-nav">
  <ul class="ncss-nav-list">
    <li class="ncss-nav-item"><a href="/" aria-current="page">Start</a></li>
    <li class="ncss-nav-item">
      <details class="ncss-nav-dropdown">
        <summary>Mehr</summary>
        <ul class="ncss-nav-submenu">
          <li><a href="/a">Punkt A</a></li>
        </ul>
      </details>
    </li>
  </ul>
</nav>

Verschachtelte Dropdowns (2 Ebenen)

Ein .ncss-nav-dropdown innerhalb eines .ncss-nav-submenu - beliebig tief möglich.

Mega-Menü

Gleiche .ncss-nav-submenu-Klasse, zusätzlich --mega: mehrspaltiges Grid statt einfacher Liste.

Fenster schmaler ziehen - unterhalb 64rem wird die Mega-Spalten-Ansicht automatisch zu einer gestapelten Liste (dieselbe nav-collapse-Konvention wie beim normalen Dropdown).

Tree-Navigation (Sidebar-Variante)

Kein Kollabieren nötig, beliebig tief verschachtelbar - typisch für Docs-Sidebars.

Off-Canvas (mobile Kollaps)

Der Menü-Button oben rechts in der Topbar (Fenster schmaler als 64rem ziehen, oder direkt am Handy) öffnet dasselbe Panel als Off-Canvas-Sidebar - eine Nav-Struktur, zwei Darstellungen, siehe components/nav.css.

Viele Punkte: Priority-Navigation (Opt-in, JS)

<ncss-nav-priority> (Custom Element, components/nav-priority.css + js/nav-priority.js) verschiebt Punkte, die nicht mehr in eine Zeile passen, automatisch per ResizeObserver in ein "Mehr"-Dropdown - funktioniert für jede Punktzahl, kein fester Breakpoint im Code. Ohne JS reiner Passthrough (normales flex-wrap).

<ncss-nav-priority>
  <ul class="ncss-nav-list">
    <li class="ncss-nav-item"><a href="/">Start</a></li>
    <li class="ncss-nav-item"><a href="/a">Punkt A</a></li>
    ... (beliebig viele weitere)
  </ul>
</ncss-nav-priority>

Live - Regler ziehen, um den Rahmen schmaler/breiter zu machen (ein <iframe> spannt seinen EIGENEN Viewport auf, deshalb per Regler statt das ganze Browserfenster verkleinern zu müssen). Läuft bei JEDER Breite ohne Umschalten auf einen ☰-Button - "Mehr" wächst weiter, je schmaler der Rahmen wird:

Viele Punkte: Horizontal scrollbar (reines CSS)

.ncss-nav--scroll für viele KURZE Punkte (Tags, Kategorie-Pills) - zeigt alle gleichzeitig, keiner versteckt sich, dafür scrollt die Zeile. Randloser Fade-Verlauf, scroll-snap, kein JS.

<nav class="ncss-nav ncss-nav--scroll">
  <ul class="ncss-nav-list">
    <li class="ncss-nav-item"><a href="#tag1">Tag Eins</a></li>
    ...
  </ul>
</nav>

Slide-Drilldown für mobile Untermenüs (Opt-in, JS)

<ncss-nav-drilldown> (components/nav-drilldown.css + js/nav-drilldown.js) - statt inline aufzuklappen, schiebt sich beim Antippen eines Elternpunkts das GANZE Panel auf die Kindpunkte um (wie iOS-Einstellungen), mit einem "Zurück"-Punkt oben. Nur mobil relevant, IDENTISCHES Markup wie der normale verschachtelte Dropdown - ohne JS klappt es normal inline auf. Ein Elternpunkt bleibt zusätzlich als eigene Seite aufrufbar, wenn <summary> einen echten <a> enthält (siehe "Produkte" unten) - ein Klick auf den Linktext navigiert, ein Klick auf den Chevron drillt rein.

<ncss-nav-drilldown>
  <ul class="ncss-nav-list">
    <li class="ncss-nav-item">
      <details class="ncss-nav-dropdown">
        <summary><a href="/produkte">Produkte</a></summary>
        <ul class="ncss-nav-submenu">
          <li><a href="/produkte/a">Produkt A</a></li>
        </ul>
      </details>
    </li>
  </ul>
</ncss-nav-drilldown>

Live - immer im mobilen Off-Canvas-Modus (eigener, schmaler <iframe>-Viewport): ☰ antippen, dann "Produkte" antippen.

Leiste beim Scrollen aus-/einblenden

Rein native CSS Scroll-State-Container-Query (@container scroll-state(scrolled: block-end)), kein JS, kein Scroll-Event-Listener. Auf DIESER Seite (echtes Seiten-Scroll) runter- scrollen - die Leiste unten blendet aus; wieder hochscrollen, sie kommt zurück. Noch nicht in jedem Browser unterstützt (@supports-Gate) - ohne Unterstützung bleibt sie einfach dauerhaft sichtbar, kein kaputtes Verhalten.

Diese Leiste reagiert auf die Scroll-Richtung