CSS
HTML
JavaScript
PHP
Coming Soon
Generatori
Varie & Old

CSS scroll-margin

La proprietà CSS3 scroll-margin imposta lo spazio interno quando si effettua uno scroll verso un elemento

La proprietà scroll-margin è una shorthand usata per regolare lo spazio tra il bordo del viewport e l’elemento target durante lo scroll automatico (es. tramite scrollIntoView o link ancora). Funziona come una scorciatoia per scroll-margin-top, scroll-margin-right, scroll-margin-bottom e scroll-margin-left.

Sintassi

scroll-margin: lunghezza [lunghezza] [lunghezza] [lunghezza];

Significato dei valori principali:

  • 1 valore: Applica la stessa distanza a tutti e 4 i lati (top, right, bottom, left).

  • 2 valori: Primo valore per top/bottom, secondo per left/right.

  • 3 valori: Top | left/right | bottom.

  • 4 valori: Top | Right | Bottom | Left.


Esempio proprietà: scroll-margin


Codice Esempio: scroll-margin

CODE: CSSpreleva codice
  1. .scroll-target {
  2.   scroll-margin: 80px 0px; /* 80px per sopra/sotto, 0px a sinistra/destra */
  3.   height: 200px;
  4.   background-color: #50a14f;
  5.   color: white;
  6.   display: flex;
  7.   align-items: center;
  8.   justify-content: center;
  9.   font-size: 22px;
  10.   border-radius: 10px;
  11. }

Contenuto Esempio: scroll-margin

Esempio di utilizzo di scroll-margin

In questo esempio, l’elemento ha un margine di scorrimento applicato su tutti i lati, grazie alla shorthand scroll-margin. Quando ci si scrolla verso di esso, non si incolla al bordo della viewport.


Vai alla sezione con scroll-margin
Scroll con margine su tutti i lati

CSS e HTML per scroll-margin:

  
  <style>
    html {
      scroll-behavior: smooth;
    }

    .scroll-target {
      scroll-margin: 80px 0px; /* 80px per sopra/sotto, 0px a sinistra/destra */
      height: 200px;
      background-color: #50a14f;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 22px;
      border-radius: 10px;
    }

    .scroll-link {
      font-size: 20px;
      color: #ff6347;
      text-decoration: underline;
      cursor: pointer;
    }
  </style>

  <a href="#target" class="scroll-link">Vai alla sezione con scroll-margin</a>

  <div id="target" class="scroll-target">
    Scroll con margine su tutti i lati
  </div>
  

📌 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 come scrollIntoView() o scrollTo().
  • 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 con scroll-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 con scroll-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 ha scroll-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, o scrollIntoView), non con scrollTo({ 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.


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.

Supporto Browser

Browser Support

I Cookie su questo sito:

Il nostro sito utilizza cookie e altre tecnologie in modo tale che sia noi, sia i nostri partner, possiamo ricordarci di te e capire come tu e gli altri visitatori utilizzate il nostro sito. Qui puoi trovare ulteriori informazioni sui cookie e le altre tecnologie. Chiudendo questo banner o continuando la navigazione acconsenti all'uso dei cookie. Acconsento Info Cookies