CSS Fogli Di Stile

Margini E Collasso Dei Margini

Margini e collasso dei margini: teoria, esempi e sperimentazione nel browser.

Prerequisiti: Padding.

Margini e collasso

Margini e collasso: fondamenti.

padding separa il contenuto dal bordo e riceve lo sfondo dell’elemento. margin crea spazio esterno. Spostare una distanza da margin a padding cambia quindi anche l’area colorata e, nei componenti interattivi, può cambiare l’area utilizzabile. Le abbreviazioni accettano uno, due, tre o quattro valori: con quattro l’ordine è alto, destra, basso, sinistra; con due si indicano prima alto/basso, poi destra/sinistra.

Come funziona: margini e collasso

Margini e collasso: comportamento nel browser.

Per un normale blocco con larghezza inferiore a quella del contenitore, margin-inline: auto distribuisce lo spazio residuo sui due lati e lo centra orizzontalmente. Non ottieni un effetto percepibile se il blocco occupa già tutto lo spazio disponibile. Le proprietà logiche come margin-inline e padding-block descrivono gli assi rispetto alla modalità di scrittura; qui, con testo italiano orizzontale, inline corrisponde alla direzione orizzontale.

Scelte di utilizzo e limiti

Margini e collasso: progetto e verifica.

Nel normale flusso a blocchi alcuni margini verticali adiacenti possono collassare. Due margini positivi, per esempio 20px e 30px, possono produrre una separazione di 30px anziché 50px. Non tutti i margini collassano: quelli degli elementi flex e grid non seguono questo comportamento. Anche margini di genitori e figli possono collassare in determinate condizioni. Prima di aggiungere distanze sempre più grandi controlla il contesto di layout.

Idea chiave: Il contenitore è centrato e il padding mantiene i paragrafi lontani dal bordo. I margini adiacenti positivi dei due paragrafi nel normale flusso collassano.

Esempio commentato

Margini e collasso: HTML e CSS.

Esempio con stile esterno. Il documento index.html collega il file stile.css mediante il tag link nella head.

Documento HTML completo

<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Margini e collasso dei margini</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<main class="contenitore">
<p class="prima">Primo paragrafo</p>
<p class="seconda">Secondo paragrafo</p>
</main>
</body>
</html>

File stile.css

.contenitore {
  width: 80%;
  max-width: 40rem;
  margin-inline: auto;
  padding: 1rem;
  border: 1px solid #174a7e;
  background-color: #eef4fa;
}
.prima { margin: 0 0 20px; }
.seconda { margin: 30px 0 0; }

Il contenitore è centrato e il padding mantiene i paragrafi lontani dal bordo. I margini adiacenti positivi dei due paragrafi nel normale flusso collassano.

ProprietàValore nell’esempioSignificato
width80%Larghezza secondo box model e contesto.
max-width40remLimite superiore alla larghezza.
margin-inlineautoMargini nell’asse inline della modalità di scrittura.
padding1remSpazio interno fra contenuto e bordo.
border1px solid #174a7eAbbreviazione per spessore, stile e colore del bordo.
background-color#eef4faColore dello sfondo dell’elemento.
Attenzione: 30px, cioè il maggiore dei due in questo caso.

LABORATORIO

Sperimentare: Margini e collasso

Il contenitore è centrato e il padding mantiene i paragrafi lontani dal bordo. I margini adiacenti positivi dei due paragrafi nel normale flusso collassano.

Obiettivo: Comprendere e applicare margini e collasso attraverso esempi e verifica nel browser.

Software: editor di testo e browser con DevTools; Tempo: 15 minuti.

Preparazione: scarica l’esempio completo e estrai lo ZIP. Apri index.html nel browser. Puoi anche aprire l’esempio online.

Apri il file stile.css nell’editor. Le lezioni iniziali usano un documento già preparato per concentrarsi sulle regole; il collegamento esterno e lo stile interno vengono spiegati nelle lezioni dedicate. Le modifiche nei DevTools sono normalmente temporanee.

Procedura passo passo

  1. Osserva il punto di partenza: apri l’esempio, confronta markup e regole e individua il selettore o il contesto di layout rilevante.
  2. Esegui la modifica: Cambia soltanto il padding del contenitore e osserva lo sfondo.
  3. Salva e ricarica la pagina dopo ogni modifica. Confronta gli elementi che devono cambiare con quelli che devono restare invariati.
  4. Ispeziona il risultato: usa il menu Ispeziona e controlla Styles/Regole e Computed/Calcolato. Per layout Flex o Grid attiva l’overlay, se disponibile.
  5. Annota causa ed effetto: scrivi il valore o la struttura iniziale, il cambiamento e il risultato. Ripristina il punto di partenza prima dell’esercizio autonomo.
Cosa devi vedere — Output atteso

La distanza fra i paragrafi è 30px nel caso proposto. La scatola centrata mantiene lati esterni simmetrici.

Il font e alcuni dettagli dell’interfaccia dipendono dal browser. Valuta la proprietà e il comportamento descritti, non una corrispondenza perfetta con uno screenshot.

Verifica del risultato

ControlloCriterio
Effetto specificoLa distanza fra i paragrafi è 30px nel caso proposto. La scatola centrata mantiene lati esterni simmetrici.
Corrispondenza del codiceIndividua la dichiarazione o la relazione HTML responsabile della differenza.
PersistenzaRiporta la modifica nel file e verifica dopo un ricaricamento.
SpiegazioneMotiva la differenza senza affidarti soltanto a uno screenshot.
Se il risultato non coincide: verifica file aperto, salvataggio, percorso del CSS, selettore e validità dei valori. Controlla poi la cascata e le dimensioni del viewport. Cambia una sola causa alla volta.

Esercizio autonomo

Assegna padding verticale di 12px e orizzontale di 24px al contenitore.

Consegna: file modificati e una breve spiegazione di selettore, proprietà e risultato. Criterio di riuscita: il cambiamento richiesto funziona dopo il ricaricamento e non taglia informazioni indispensabili.

Una possibile soluzione dell’esercizio
.contenitore {
  padding: 12px 24px;
}

Integra la soluzione nel punto pertinente: modifica o sostituisci le regole coinvolte invece di accumulare dichiarazioni contraddittorie. Le altre parti dell’esempio restano necessarie.

Verifica dei concetti

Margini e collasso: interpretazione e applicazione.

Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.

1. Due margini positivi di 20px e 30px che collassano producono quale distanza? ▾
Risposta: 30px. padding separa il contenuto dal bordo e riceve lo sfondo dell’elemento. margin crea spazio esterno. Spostare una distanza da margin a padding cambia quindi anche l’area colorata e, nei componenti interattivi, può cambiare l’area utilizzabile. Le abbreviazioni accettano uno, due, tre o quattro valori: con quattro l’ordine è alto, destra, basso, sinistra; con due si indicano prima alto/basso, poi destra/sinistra.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: Il contenitore è centrato e il padding mantiene i paragrafi lontani dal bordo. I margini adiacenti positivi dei due paragrafi nel normale flusso collassano.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: La distanza fra i paragrafi è 30px nel caso proposto. La scatola centrata mantiene lati esterni simmetrici.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: 30px, cioè il maggiore dei due in questo caso.

Riferimento tecnico: MDN — riferimento CSS. Cerca le proprietà o i selettori utilizzati nell’esempio.