back to top

CSS: padding e margin

In questa lezione vedremo le proprietร  padding e margin ovvero, rispettivamente, la spaziatura interna ed esterna al box.

La proprietร  padding

Tramite il padding viene definito uno spazio tra lโ€™area dei contenuti ed il confine interno del box. Il suo utilizzo รจ frequente in due circostanze ben precise:

Pubblicitร 
  • quando il box ha un bordo (per creare un poโ€™ di distanza tra il contenuto interno al box ed il suo bordo);
  • quando il box ha uno sfondo colorato (in modo da creare un effetto visivamente piรน gradevole in cui il contenuto "non tocca" il perimetro dellโ€™area colorata).

Vediamo un immagine dโ€™esempio che mostra un box (con bordo e sfondo colorato) cui รจ stato applicato un padding:

padding

Il valore del padding puรฒ essere espresso mediante un numero (accompagnato da unโ€™unitร  di misura) oppure in percentuale.

Vediamo un primo esempio:

div.box { padding: 10px; }

Con questa regola abbiamo applicato un padding di 10 pixel su tutti i lati del contenuto: superiore, inferiore, destro e sinistro.

Volendo, perรฒ, รจ anche possibile prevedere valori differenti, per farlo si utilizza la proprietร  padding specificando quattro valori in questo modo:

div.box { padding: 10px 5px 15px 30px; }

Lโ€™ordine (da sinistra verso destra) รจ il seguente:

  • padding superiore = 10px
  • padding destro = 5px
  • padding inferiore = 15px
  • padding sinistro = 30px

In pratica il primo valore corrisponde al padding superiore e poi si prosegue muovendosi in senso orario.

Puรฒ capitare di incorrere anche in un utilizzo di padding con due soli valori:

div.box { padding: 10px 20px; }

Questa sintassi consente di differenziare i padding superiore/inferiore (10px) da quelli laterali (20px).

Un altra modalitร  prevista da CSS per la definizione di padding distinti per i singoli lati รจ quella che prevede lโ€™utilizzo delle proprietร  specifiche:

  • padding-top (padding superiore)
  • padding-bottom (padding inferiore)
  • padding-left (padding sinistro)
  • padding-right (padding destro)

Il loro funzionamento รจ intuitivo, vediamo qualche esempio:

div.box {
  padding-top: 10px;
  padding-left: 20px;    
}

La proprietร  margin

Per certi versi molto simile a padding รจ la proprietร  margin. A differenza della prima (che come abbiamo detto definisce una spaziatura interna al box), la proprietร  margin assegna un margine esterno al box, quindi "al di fuori" del suo perimetro.

Normalmente margin รจ utilizzata per distanziare i vari elementi della pagina tra loro.

Vediamo un esempio:

div.box { margin: 10px; }

Mediante questa semplice regola CSS, il nostro box avrร  un margine di 10 pixel su tutti i lati.

Esattamente come accade con padding, รจ possibile prevedere per margin quattro valori diversi:

div.box { margin: 10px 5px 15px 30px; }

Lโ€™ordine (da sinistra verso destra) รจ il seguente:

  • margine superiore = 10px
  • margine destro = 5px
  • margine inferiore = 15px
  • margine sinistro = 30px

Anche qui il primo valore corrisponde al margine superiore e poi si prosegue muovendosi in senso orario.

Qualora vengano definiti due valori numerici come in questo esempio:

div.box { margin: 10px 20px; }

il primo valore (10px) si riferisce ai margini superiore ed inferiore mentre il secondo valore (20px) a quelli destro e sinistro.

Anche i margini, come i padding, possono essere definiti mediante quattro proprietร  specifiche:

  • margin-top (margine superiore)
  • margin-bottom (margine inferiore)
  • margin-left (margine sinistro)
  • margin-right (margine destro)

Impostare margini negativi

Una importante particolaritร  dei margini รจ che queste proprietร  accettano anche valori negativi, ad esempio:

div.box { margin-left: -35px; }

Grazie a questa importante possibilitร  รจ possibile "spostare" gli elementi della pagina facendoli uscire, ad esempio, dai confini del box genitore.

margini negativi

Tale facoltร  si rivela estremamente interessante, ad esempio, quando si lavora con elementi flottanti o posizionati in modo assoluto.

Eโ€™ appena il caso di ricordare che i padding, a differenza dei margini, non possono essere negativi.

Margin collapsing

Una caratteristica particolare dei margini รจ quella di "collassare" quando due box impilati entrano a contatto tra loro (da qui lโ€™espressione margin collapsing). Questo significa che quando due elementi, ciascuno con il proprio margine, entrano a contatto, lo spazio tra loro non sarร  dato (come si puรฒ pensare) dalla somma dei rispettivi margini ma dal margine maggiore (mentre lโ€™altro margine, in un certo senso, viene annullato).

Facciamo un esempio: si supponga di avere due box uno sopra lโ€™altro e che il box superiore abbia 30 px di margine inferiore ed il box sottostante abbia 20 px di margine superiore.

margin collapsing

In questa situazione la distanza tra i due box non sarร  di 50 px, ma di 30 in quanto il margine maggiore assorbe quello minore che, appunto, collassa.

Eโ€™ molto importante precisare che questo effetto vale solo per i margini di box adiacenti in senso verticale mentre non si applica ai margini di box adiacenti sulla linea orizzontale.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).