Feste Header und Sprunglinks? Die Lösung ist scroll-margin-top

Avatar of Chris Coyier
Chris Coyier am

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

Das Problem: Sie klicken auf einen Sprunglink wie <a href="#header-3">Springen</a>, der zu etwas wie <h3 id="header-3">Überschrift</h3> verlinkt. Das ist völlig in Ordnung, bis Sie einen Header mit position: fixed; am oberen Rand der Seite haben, der die Überschrift verdeckt, auf die Sie verlinken möchten!

Feste Header haben die unangenehme Angewohnheit, das Element zu verbergen, auf das Sie verlinken möchten.

Früher gab es alle möglichen wilden Hacks, um dieses Problem zu umgehen. Tatsächlich dachte ich beim Design von CSS-Tricks, während ich schreibe: „Scheiß drauf, ich werde einfach einen großen, großzügigen padding-top auf meine Überschriften im Artikel setzen, weil mir dieser Look sowieso nichts ausmacht.“

Aber es gibt jetzt tatsächlich eine wirklich einfache Möglichkeit, dies in CSS zu handhaben.

h3 {
  scroll-margin-top: 5rem; /* whatever is a nice number that gets you past the header */
}

Wir haben einen Almanac-Artikel dazu, der die Browserunterstützung enthält, die im Wesentlichen überall ist. Es wird oft im Zusammenhang mit Scroll Snapping besprochen, aber ich finde diesen Anwendungsfall noch praktischer.

Hier ist eine einfache Demo

In einer ähnlichen Richtung bringt der seltsame (aber coole) „Textfragmente“-Link, den Chrome eingeführt hat, Sie stattdessen in die Mitte der Seite, was ich nett finde.