CSS scroll-padding
La proprietà CSS scroll-padding in CSS3 definisce uno spazio interno per lo scroll
La proprietà scroll-padding
in CSS3 consente di specificare una distanza tra il bordo del contenitore scrollabile e il contenuto durante lo snap automatico. È utile per creare un'esperienza di scorrimento più gradevole, evitando che gli elementi vengano allineati troppo vicino ai bordi visivi del contenitore.
Sintassi
Significato dei valori principali:
-
lunghezza (length): valore di distanza come
px
,em
,%
, ecc. Può essere uno o più valori per specificare padding per top, right, bottom e left. -
valori multipli: come nel
padding
, si possono usare fino a 4 valori (es.scroll-padding: 20px 10px 30px 5px;
) che rappresentano: top, right, bottom, left. -
auto (default): Se non specificato, equivale a
auto
, ovvero nessun offset applicato allo scroll snap.
Esempio proprietà: scroll-padding
Codice Esempio: scroll-padding

.scroll-container {
width: 320px;
height: 320px;
overflow: auto;
border: 2px solid #666;
padding: 10px;
scroll-snap-type: both mandatory;
scroll-padding: 40px 60px 40px 60px; /* top right bottom left */
display: grid;
grid-template-columns: repeat(3, 200px);
grid-template-rows: repeat(3, 200px);
gap: 20px;
}
.box {
background-color: #c678dd;
color: white;
font-size: 20px;
text-align: center;
line-height: 200px;
border-radius: 8px;
scroll-snap-align: center;
}
Contenuto Esempio: scroll-padding
📌 Nota sull’utilizzo delle proprietà scroll-*
Le proprietà della famiglia scroll-*
offrono controllo preciso sul comportamento e sul posizionamento dello scroll nei contenitori overflow. Tuttavia, la loro efficacia può variare in base al tipo di interazione, al contesto e al metodo di attivazione dello scroll. Di seguito una panoramica generale:
-
scroll-behavior
: controlla se lo scroll avviene in modo fluido (smooth
) o istantaneo (auto
). È supportata in interazioni utente (tastiera, mouse) e via JavaScript con metodi comescrollIntoView()
oscrollTo()
. -
scroll-margin*
: imposta uno spazio esterno virtuale tra il target dello scroll e il bordo del contenitore. È utile per evitare che l’elemento scrollato venga troppo "incollato" al bordo. Agisce solo quando l’elemento è il target di scroll (es.scrollIntoView()
). -
scroll-padding*
: definisce un’area interna del contenitore da considerare come "bordo attivo" per gli snap o il focus di scroll. È efficace nei contenitori conscroll-snap-type
attivo o nei layout con focus automatico. -
scroll-snap-type
: abilita lo snap agli elementi figlio durante lo scroll, obbligando (o suggerendo) l’aggancio al più vicino snap-point. Richiede layout a scorrimento (overflow
) e funzionerà solo se associato a elementi figli conscroll-snap-align
. -
scroll-snap-align
: definisce dove un elemento figlio deve "agganciarsi" all'interno del contenitore scrollabile (es. inizio, centro, fine). Funziona solo se il contenitore hascroll-snap-type
. -
scroll-snap-stop
: impedisce che l’elemento venga saltato durante uno scroll veloce. Utile per forzare lo stop su sezioni importanti, ma funziona solo con scroll naturali (touch, tastiera, oscrollIntoView
), non conscrollTo({ left: ... })
.
Compatibilità e contesto: molte di queste proprietà funzionano meglio con interazioni naturali (touchpad, touchscreen, tastiera) e possono non comportarsi come previsto quando lo scroll è simulato in modo diretto con JavaScript. Per ottenere effetti coerenti, è consigliato usare layout con display: flex
o grid
, dimensioni fisse e contenitori overflow con scroll-snap-type
attivo.
Prova questo esempio
DEMO
Note:
Le indicazioni dei Browser supportati sono superate grazie alla loro costante evoluzione, si consiglia di verificare la compatibilità dei vari browser eseguendo il test cliccando qui sotto.