mitmario.dev

Scroll-Verhalten & Scroll Snap

Mit CSS kannst du das Scroll-Verhalten deiner Website steuern: scroll-behavior macht Anker-Links sanft, scroll-snap sorgt dafür, dass Elemente wie in einem Karussell einrasten, und scroll-padding bzw. scroll-margin helfen dir, Offsets für Sticky Header einzubauen. Perfekt für moderne UIs mit Slidern und Fullscreen-Sections.

Steckbrief scroll-verhalten
Syntax
scroll-behavior: auto | smooth
Initialwert
auto
Vererbt
Nein
Animierbar
Nein
Kategorie
Interaktion
Werte
15
Beispiele
4
Browser
5 von 5
E-Mail
0 von 5
Stand
15.02.2026

Grundlagen

scroll-behavior steuert, ob Scrollen abrupt oder sanft (smooth) erfolgt. Das gilt vor allem für programmatisches Scrollen (JavaScript scrollTo()) oder Anker-Links (<a href="#section">). Mit scroll-behavior: smooth auf dem html-Element wird jedes Scrollen animiert.

scroll-snap ist ein System aus mehreren Properties, das Elemente beim Scrollen magnetisch “einrasten” lässt. Du definierst auf dem Scroll-Container einen scroll-snap-type (z. B. x mandatory für horizontales Snapping) und auf den Kindern scroll-snap-align (z. B. start, center, end). So baust du Karussells, Fullscreen-Sections oder Slider ohne JavaScript.

scroll-padding und scroll-margin sind Offset-Werte, die beeinflussen, wohin gescrollt wird. scroll-padding fügt Innenabstand im Container hinzu (z. B. für Sticky Header), scroll-margin verschiebt den Snap-Point des Kindes. Beide werden in Pixeln oder relativen Einheiten angegeben.

Syntax & Werte

15 Werte

scroll-behavior

scroll-behavior wird auf dem scrollenden Element (meist html oder ein Container) gesetzt.

Wert Beschreibung Beispiel
auto Sofortiges Scrollen (Standard-Verhalten des Browsers)
smooth Sanftes, animiertes Scrollen bei programmatischen oder Anker-Link-Aktionen

scroll-snap-type

scroll-snap-type definiert die Snap-Achse und wie strikt gesnapped wird.

Wert Beschreibung Beispiel
none Kein Scroll-Snapping (Standard)
x mandatory Horizontales Snapping, muss immer an einem Snap-Point enden
x proximity Horizontales Snapping, nur wenn nah genug an einem Snap-Point
y mandatory Vertikales Snapping, muss immer an einem Snap-Point enden
y proximity Vertikales Snapping, nur wenn nah genug
both mandatory Snapping in beide Richtungen (selten verwendet)

scroll-snap-align

scroll-snap-align wird auf den Kind-Elementen gesetzt und bestimmt, an welchem Punkt sie einrasten.

Wert Beschreibung Beispiel
none Dieses Element rastet nicht ein (Standard)
start Element rastet am Anfang des Containers ein (oben/links)
center Element rastet in der Mitte des Containers ein
end Element rastet am Ende des Containers ein (unten/rechts)

scroll-padding & scroll-margin

Beide Properties nehmen Längen-Werte (wie padding und margin) und beeinflussen den Offset beim Scrollen.

Wert Beschreibung Beispiel
<length> Feste Werte wie 20px, 2rem, 10vh etc.
scroll-padding-top/right/bottom/left Einzelne Seiten des Containers (wie padding)
scroll-margin-top/right/bottom/left Einzelne Seiten des Kind-Elements (wie margin)

Beispiele

4 Beispiele

Hier siehst du den Unterschied: Links springt der Container sofort zum Ziel (auto), rechts gleitet er sanft (smooth). Die Buttons steuern beide Container gleichzeitig per JavaScript.

scroll-behavior: auto vs. smooth
/* Sofortiges Scrollen (Standard) */
.container-auto {
  scroll-behavior: auto;
  height: 300px;
  overflow-y: auto;
}

/* Sanftes, animiertes Scrollen */
.container-smooth {
  scroll-behavior: smooth;
  height: 300px;
  overflow-y: auto;
}

/* Oder auf html für die ganze Seite */
html {
  scroll-behavior: smooth;
}

Barrierefreiheit

scroll-behavior: smooth kann für Menschen mit Bewegungsempfindlichkeit problematisch sein. Nutze prefers-reduced-motion, um smooth scrolling zu deaktivieren:

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

scroll-snap-type: mandatory kann User “gefangen halten”, wenn sie versuchen, zwischen zwei Snap-Points zu scrollen. Teste ausgiebig auf Touch-Geräten und mit Tastatur-Navigation. proximity ist oft die bessere Wahl.

Stelle sicher, dass Tastatur-Navigation (Tab, Pfeiltasten) mit Scroll-Snap funktioniert. Browser scrollen automatisch zu fokussierten Elementen, aber scroll-padding hilft, dass Sticky Header den Fokus nicht verdecken.

Häufige Fehler

5 Fehler
01 scroll-behavior: smooth ohne prefers-reduced-motion
Kann bei Menschen mit Bewegungsempfindlichkeit Schwindel oder Übelkeit auslösen. Immer mit Media Query absichern.
02 mandatory ohne genug Content
Wenn du scroll-snap-type: x mandatory hast, aber nur zwei Items in einem breiten Container, kann der User nicht “frei” scrollen. Teste mit verschiedenen Viewport-Größen.
03 scroll-padding vergessen bei Sticky Header
Ohne scroll-padding-top verdeckt ein Sticky Header den Inhalt beim Scrollen zu Ankern. Setze den Wert auf die Header-Höhe.
04 scroll-snap-type auf Kindern statt Container
scroll-snap-type gehört auf das scrollende Parent-Element, scroll-snap-align auf die Kinder. Verwechsle das nicht.
05 Nicht auf Touch-Geräten testen
Scroll-Snap verhält sich auf Mobile oft anders als mit Maus oder Trackpad. Teste auf echten Geräten.

Browser-Kompatibilität

5 von 5

scroll-behavior wird seit 2018 in allen Browsern unterstützt. scroll-snap hat seit 2019 volle Unterstützung (CSS Scroll Snap Module Level 1).

  • Chrome

    Komplett

  • Firefox

    Komplett

  • Safari

    Komplett

  • Edge

    Komplett

  • Opera

    Komplett

Email-Kompatibilität

0 von 5

Scroll-Verhalten funktioniert nicht in HTML-Emails. E-Mail-Clients blockieren scroll-behavior, scroll-snap und scrollbare Container.

  • Apple Mail

    Keine

    Kein Support

  • Gmail

    Keine

    Kein Support

  • Outlook

    Keine

    Kein Support

  • Yahoo Mail

    Keine

    Kein Support

  • Thunderbird

    Keine

    Kein Support

Newsletter

einmal die Woche, kostenlos

Neue Artikel und Videos, was sich auf der Lernplattform tut, und ab und zu ein Sonderpreis zum Kursstart. Kurz genug, dass du es auch liest.

Zuletzt verschickt · KW 40

Einmal alles neu, und die Lernplattform ist da

Danach kommt eine Mail mit Bestätigungslink, erst dann bist du eingetragen. Abmelden geht unten in jeder Ausgabe. Mehr dazu in der Datenschutzerklärung.