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!
Ich habe einen Codepen für so etwas gemacht (letztes Jahr), in React, mit Custom Hooks, was ähnliches wie beschrieben ermöglicht und viel mehr!
sehr flexibel, solide & performant
Zuerst schien es auch, dass IntersectionObserver gut passen würde, aber sehr schnell sah ich, dass es für das, was ich im Sinn hatte, nicht gut performte oder zuverlässig war. Jetzt ist es perfekt.
Hallo vsync, gute Arbeit. Ich frage mich, haben Sie dieses Beispiel auf GitHub?
Davor Suljic mit einer cleveren Lösung (ohne JavaScript!) nach Abpfiff