Sticky Inhaltsverzeichnis mit scrollbaren aktiven Zuständen

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Nehmen wir an, Sie haben ein zweispaltiges Layout: eine Hauptspalte mit Inhalt und eine Seitenleiste. Angenommen, es gibt viel Inhalt, mit Abschnitten, die Scrollen erfordern. Die Seitenleiste ist weitgehend leer, so dass Sie sicher ein position: sticky; Inhaltsverzeichnis dort für all den Inhalt in der Hauptspalte platzieren können. Ein ziemlich gängiges Muster für Dokumentationen.

Bramus Van Damme hat ein schönes Tutorial zu all dem, beginnend mit semantischer Markup, die meisten Funktionalitäten mit HTML und CSS implementiert und dann den letzten Teil der aktiven Navigationserweiterung mit JavaScript erledigt.

Wenn Sie sich zum Beispiel nicht selbst zu einem Abschnitt klicken (wo Sie vielleicht mit :target Styling für aktive Navigation davonkommen könnten), ist JavaScript notwendig, um zu sagen, wo Sie sich gerade befinden und die aktive Navigation hervorzuheben. Dieser aktive Teil wird schön mit IntersectionObserver gehandhabt, was, wie die perfekte API dafür ist.

Hier ist das Ergebnis

Es erinnert mich an eine sehr ähnliche Demo von Hakim El Hattab, die er Progress Nav nannte. Das Designmuster ist genau dasselbe, aber Hakims Version hat diesen ultra-schicken SVG-Pfad, der sich unterwegs selbst zeichnet und für Unter-Navigationspunkte einrückt. Ich werde hier ein Video einbetten

Dieses verwendet kein IntersectionObserver, also wenn Sie daran basteln wollen, kombinieren Sie sie!