CSS Scroll Snap: caroselli e sezioni a tutta pagina

Guida a CSS Scroll Snap

CSS Scroll Snap: caroselli, sezioni a tutta pagina e un playground dal vivo

Prova ogni valore di scroll-snap-type, scroll-snap-align e scroll-snap-stop in uno scroller dal vivo, poi copia un carosello solo CSS e sezioni a tutta pagina che restano accessibili.

Lo scroll snap fa fermare un box scorrevole su figli scelti invece che in un punto qualsiasi. Metti scroll-snap-type: x mandatory (oppure y, o proximity) sul contenitore di scroll, poi scroll-snap-align: start, center o end su ogni figlio. Aggiungi scroll-padding per gli header fissi e scroll-snap-stop: always per fermarti su ogni elemento.

Le proprietà di scroll snap in sintesi

Un tempo lo scroll snap richiedeva una libreria per caroselli. Oggi poche righe di CSS ti danno card da scorrere con lo swipe, una galleria a pagine o sezioni a schermo intero, con scroll inerziale e supporto da tastiera gestiti dal browser. Usa il playground per sentire la differenza tra ogni valore prima di copiare il codice.

Domande frequenti

Qual è la differenza tra mandatory e proximity?

Con mandatory il contenitore si ferma sempre su una posizione di snap quando lo scroll termina. Con proximity fa lo snap solo quando lo scroll finisce vicino a una di esse, il che lascia le persone libere di leggere nel mezzo. proximity è il valore predefinito quando scrivi solo l'asse.

Perché lo scroll snap non funziona?

Le cause abituali sono: scroll-snap-type è sui figli invece che sul genitore che scorre, il genitore non va davvero in overflow (imposta overflow-x: auto e una dimensione fissa), oppure i figli non hanno scroll-snap-align. Per lo snap a livello di pagina il contenitore è html, non body.

Come evito che un header fisso copra le sezioni agganciate?

Imposta scroll-padding-top sul contenitore di scroll pari all'altezza dell'header, per esempio html { scroll-padding-top: 64px; }. Le sezioni agganciate e i salti alle ancore si fermano così sotto l'header invece che dietro di esso.

Posso creare un carosello senza JavaScript?

Sì per lo swipe e lo scroll: una riga flex con overflow-x: auto e snap x mandatory è un carosello funzionante. Gli indicatori a punti che mostrano la slide corrente, la riproduzione automatica e il loop richiedono comunque un po' di script.

CSS scroll snap è supportato ovunque?

scroll-snap-type è Baseline ampiamente disponibile dal 2022 su Chrome, Edge, Firefox e Safari, e scroll-snap-stop da luglio 2022. Puoi usarlo senza fallback; i browser che non lo supportano semplicemente scorrono liberamente.

Caroselli che le persone riescono davvero a usare

Sezioni a tutta pagina senza trappole

Carosello di card solo CSS

Carosello orizzontale con la card successiva che si intravede

Fai swipe, scorri lateralmente o clicca dentro e usa i tasti freccia. Ogni card è larga l'80 percento, quindi la successiva si vede sul bordo.

Sezioni a tutta pagina

Sezioni verticali che si agganciano sotto un header fisso

Lo snap è su html, lo scroller della pagina. scroll-padding-top tiene le sezioni lontane da un header di 64px, e proximity evita di bloccare le sezioni lunghe.

Pulsanti avanti e indietro

Pilotare il carosello con scrollBy

Il browser completa lo spostamento sul punto di snap più vicino, quindi scorrere della larghezza di una card arriva esattamente sulla card successiva.

Playground di scroll snap

Asse

Rigidità

Allineamento delle slide

Fermati su ogni slide

Anteprima di scroll snap, scorri o usa i tasti freccia

Slide {n}

Copia CSS

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito