Teste jede scrollIntoView-Option in einer Live-Box, behebe mit scroll-margin-top Überschriften, die unter einem Sticky Header verschwinden, und kopiere Smooth-Scroll-Code in JavaScript und reinem CSS.
Rufe element.scrollIntoView({ behavior: 'smooth', block: 'start' }) auf, um ein Element in den sichtbaren Bereich zu holen. block legt fest, wo es vertikal landet: start, center, end oder nearest. Wenn ein Sticky Header das Ziel verdeckt, gib dem Ziel in CSS ein scroll-margin-top in Höhe des Headers, statt Offsets in JavaScript zu berechnen.
Optionen von scrollIntoView
Es gibt drei Wege, die Seite zu einem Element zu bewegen: scrollIntoView auf dem Element, scrollTo mit einer Pixelposition und ein einfacher Link auf eine id. Die Spielwiese zeigt, was jeder block-Wert bewirkt und wie scroll-margin-top eine Überschrift von einer fixierten Leiste freihält. Danach decken die Beispiele den Code ab, den du für Menüs, Formularfehler und Listen im Chat-Stil brauchst.
Ergänze scroll-margin-top am Ziel, zum Beispiel h2 { scroll-margin-top: 80px }. Die CSS-Scroll-Snap-Spezifikation verlangt von Browsern, diesen Abstand bei scrollIntoView und bei Links auf #ids zu berücksichtigen, auch wenn gar kein Snapping verwendet wird.
Übergib behavior: 'smooth' an scrollIntoView oder scrollTo oder setze scroll-behavior: smooth am html-Element, damit jedes programmatische Scrollen und jeder Link innerhalb der Seite animiert wird. scroll-behavior wirkt nicht auf Scrollen, das der Nutzer mit Mausrad oder Touch auslöst.
scrollIntoView geht von einem Element aus und berechnet die Position für dich. window.scrollTo({ top, behavior }) springt zu einer exakten Pixelposition, und scrollBy bewegt um einen relativen Betrag. Nutze scrollTo, wenn du schon eine Zahl hast, etwa um zu einer gespeicherten Position zurückzukehren.
window.scrollTo({ top: 0, behavior: 'smooth' }). Bei einem scrollbaren Panel rufst du dieselbe Methode auf dem Panel-Element statt auf window auf.
Häufige Ursachen sind ein Aufruf, bevor das Element existiert (führe ihn nach dem Rendern aus, etwa in einem React-Effect), ein Element mit display: none oder die Option nearest bei einem Element, das bereits vollständig sichtbar ist.
Sucht das Element über seine id und bringt seine Oberkante an den oberen Rand der Ansicht.
Eine Regel behebt die Überdeckung für Scrollen per Skript und für Links, die auf #id enden. Die Media Query lässt die Animation für Leute weg, die reduzierte Bewegung bevorzugen.
center hält das Feld und sein Label in der Mitte des Bildschirms, und focus bringt auch Tastaturnutzer dorthin.
Nutzt die Position des Eintrags innerhalb des Panels, sodass sich die Seite drumherum nicht bewegt.
Die Ref zeigt erst nach dem Rendern auf den DOM-Knoten, daher erfolgt der Aufruf in einem Klick-Handler oder einem Effect.
scrollIntoView-Spielwiese
Diese Box hat ihre eigene Sticky-Leiste. Wähle eine Zeile und Optionen und scrolle dann. Die Box wendet dieselbe Ausrichtungsberechnung mit scrollTo an, der Rest der Seite bleibt also still.
Zielzeile: {n}
scroll-margin-top: {n}px
Scrollen
Zurück zum Anfang der Box
Sticky-Leiste, 40px hoch
Zeile {n}
Demo-Scrollbox
Code für deine Seite
Kostenlos starten · Keine Kreditkarte nötig