Slider und Karussell mit CSS scroll-snap – ohne Bibliothek
Ein wischbares Karussell, das sauber an jeder Karte einrastet, brauchst du nicht per JavaScript zu bauen. Mit scroll-snap sagst du dem Browser, wo der Scroll stehenbleiben soll – flüssig, mit Touch und Trackpad.
Karussells und horizontale Slider waren lange ein Grund, eine JavaScript-Bibliothek einzubinden. Für den Einrast-Effekt reicht heute reines CSS: scroll-snap. Der Browser lässt den Scroll an definierten Punkten „einrasten".
Der horizontale Slider
.slider {
display: flex;
gap: 12px;
overflow-x: auto;
scroll-snap-type: x mandatory; /* horizontal einrasten, verbindlich */
-webkit-overflow-scrolling: touch;
}
.slide {
flex: 0 0 80%; /* jede Karte 80 % breit */
scroll-snap-align: center; /* mittig einrasten */
}<div class="slider">
<div class="slide">1</div>
<div class="slide">2</div>
<div class="slide">3</div>
</div>Zwei Zutaten reichen: scroll-snap-type auf dem Container (Richtung x + Stärke mandatory) und scroll-snap-align auf jedem Kind (wo es einrasten soll: start, center oder end).
mandatory vs. proximity
mandatory: rastet immer am nächsten Punkt ein – klare Karussell-Optik.proximity: rastet nur ein, wenn du nah genug loslässt – sanfter, freieres Scrollen.
Für lange Inhalte in den Karten ist proximity angenehmer, sonst „springt" der Browser dem Nutzer ins Gehege.
Rand-Abstand mit scroll-padding
Damit die eingerastete Karte nicht am Rand klebt (z. B. unter einer fixierten Kopfzeile), gibst du dem Container ein scroll-padding:
.slider { scroll-padding-inline: 16px; }Sauber ohne sichtbare Scrollbar
.slider { scrollbar-width: none; } /* Firefox */
.slider::-webkit-scrollbar { display: none; } /* Chrome/Safari */Das Ergebnis fühlt sich nativ an – mit Touch, Trackpad und Mausrad – und kommt ohne eine einzige Zeile JavaScript aus.
Wenn du eine moderne, schnelle Website mit solchen Interaktionen willst, baue ich dir das – meld dich über bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
Bilder ohne Verzerren einpassen mit object-fit
Wenn ein Bild in einen festen Rahmen soll, wird es schnell gestaucht oder verzerrt. object-fit löst das: Das Bild füllt den Rahmen oder passt komplett hinein – ohne die Proportionen zu ruinieren. Mit object-position steuerst du den Ausschnitt.
aspect-ratio in CSS – Seitenverhältnisse ohne Padding-Trick
Früher brauchte man den berüchtigten padding-top-Hack, um ein 16:9-Element zu bauen. Mit aspect-ratio geht das in einer Zeile – für Videos, Vorschaubilder und quadratische Kacheln, die beim Laden nicht springen.
Modale Dialoge ohne Framework – das native <dialog>-Element
Für ein Modal brauchst du kein Bibliotheks-Ballast und keine z-index-Schlacht. Das HTML-Element <dialog> bringt Overlay, Fokus-Falle und Schließen mit Escape von Haus aus mit. Ich zeige dir showModal(), ::backdrop und das saubere Schließen.