Menu

Margin e padding in CSS: la differenza, fianco a fianco

Il padding è lo spazio dentro il bordo di un elemento; il margin è lo spazio fuori. Guardali entrambi sullo stesso riquadro, fianco a fianco e dal vivo, poi scopri quale usare per sfondi, aree cliccabili, spazio tra elementi e centratura.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

La differenza in un'immagine

Il padding sta dentro il bordo. Il margin sta fuori. I due riquadri qui sotto hanno lo stesso contenuto e lo stesso valore di 24px; cambia solo la proprietà. Il grigio è il contenitore dietro di loro.

Con il padding, i 24px sono blu: fanno parte del riquadro, dentro il bordo, e il riquadro cresce. Con il margin, i 24px sono grigi: il riquadro resta aderente al testo e lo spazio esterno allontana i bordi del contenitore.

Provali entrambi su un riquadro

Sposta i due cursori. Il padding fa crescere il riquadro blu; il margin allontana il riquadro dai bordi grigi senza cambiarlo.

Osserva la riga della dimensione: cambia quando muovi il cursore del padding e resta uguale quando muovi quello del margin.

Margin e padding a colpo d'occhio

PaddingMargin
DoveDentro il bordoFuori dal bordo
SfondoMostra lo sfondo dell'elementoSempre trasparente
Fa parte dell'area cliccabileSìNo
Si somma alla dimensione dell'elementoSì, con content-boxNo
Può essere autoNoSì (margin: 0 auto centra)
Può essere negativoNoSì
I valori verticali collassanoMaiSì, i margini verticali adiacenti collassano
Percentuali relative aLarghezza del blocco contenitoreLarghezza del blocco contenitore
Uso tipicoSpazio dentro pulsanti, card, inputSpazio tra elementi, centratura

Ogni proprietà ha la sua pagina con tutti i dettagli: CSS padding e CSS margin.

Quale usare

Fatti una sola domanda: lo spazio appartiene all'elemento o sta tra gli elementi?

  • Lo spazio intorno all'etichetta di un pulsante, l'interno di una card, lo spazio tra il testo di un input e il suo bordo: padding. Prende lo sfondo e rende il bersaglio più grande.
  • Lo spazio tra due paragrafi, tra le card, intorno a una sezione: margin, oppure gap quando il genitore è un contenitore flex o grid.

L'area cliccabile è dove la scelta conta di più. I due link qui sotto occupano lo stesso spazio nella pagina, ma lo spazio del primo è padding e quello del secondo è margin. Solo il primo è facile da colpire:

Il contorno tratteggiato ambra è il bordo dell'elemento, cioè l'area che risponde a clic e tocchi. Il margin intorno al secondo link è spazio vuoto che non fa niente.

Spazio tra gli elementi: margin o gap

Per una riga o una griglia di elementi, gap sul genitore flex o grid di solito è più pulito dei margini su ogni figlio: va solo tra gli elementi, mai prima del primo o dopo l'ultimo, quindi non c'è niente da annullare.

Qui il contenitore grigio usa il padding (spazio al suo interno, grigio), gli elementi usano il padding (spazio dentro ciascuno, verde) e gap gestisce lo spazio tra di loro.

Errori comuni

  • Usare il margin per uno spazio che dovrebbe essere colorato. Il margin è trasparente. Se lo spazio deve mostrare lo sfondo, è padding.
  • Usare il margin per ingrandire un link. L'area cliccabile finisce al bordo; usa il padding.
  • Aspettarsi che due margini verticali da 20px facciano 40px. I margini verticali adiacenti collassano a 20px. Il padding non collassa mai.
  • Provare padding: auto per centrare. Solo il margin accetta auto.
  • Dimenticare che il padding fa crescere il riquadro. Aggiungi box-sizing: border-box perché width lo includa.

Domande frequenti

Qual è la differenza tra margin e padding?

Il padding è lo spazio tra il contenuto di un elemento e il suo bordo, all'interno dell'elemento. Il margin è lo spazio fuori dal bordo, tra l'elemento e i suoi vicini. Il padding mostra lo sfondo dell'elemento; il margin è sempre trasparente.

Quando usare il padding invece del margin?

Usa il padding per lo spazio che appartiene all'elemento: lo spazio intorno al testo di un pulsante, l'interno di una card, tutto ciò che deve condividere lo sfondo o essere cliccabile. Usa il margin (o gap in flex e grid) per lo spazio tra elementi separati.

Padding o margin aumentano la dimensione dell'elemento?

Il padding sì, con il valore predefinito box-sizing: content-box: viene aggiunto a larghezza e altezza. Il margin non si somma mai alla dimensione dell'elemento; aggiunge spazio intorno (un blocco con width: auto diventa anzi più stretto, perché i suoi margini occupano parte della larghezza disponibile). Con box-sizing: border-box, invece, il padding viene preso dall'interno della larghezza.

Il padding può essere negativo come il margin?

No. Un padding negativo non è valido e viene ignorato, mentre i margini negativi sono ammessi e possono far sovrapporre gli elementi. Il padding inoltre non può essere auto, ed è per questo che per centrare si usa margin: 0 auto.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA