CSS Fogli Di Stile

Il Box Model

Il box model: teoria, esempi e sperimentazione nel browser.

Prerequisiti: gli argomenti delle unità precedenti.

Contenuto, padding, bordo e margine

Contenuto, padding, bordo e margine: fondamenti.

Un elemento genera una o più scatole. Nel caso a blocco qui studiato distinguiamo contenuto, padding, bordo e margine. Il contenuto ospita testo e figli; il padding aggiunge spazio interno al bordo; il margine separa la scatola da quelle esterne. Lo sfondo normalmente si estende anche sotto il padding e il bordo secondo le regole di background-clip. Il margine resta esterno e non viene riempito dallo sfondo dell’elemento.

Come funziona: contenuto, padding, bordo e margine

Contenuto, padding, bordo e margine: comportamento nel browser.

Con box-sizing: content-box, il valore width indica la larghezza del contenuto. Una scatola larga 240px con padding orizzontale di 20px per lato e bordi di 2px per lato occupa 284px fino al bordo esterno: 240 + 40 + 4. I margini si aggiungono all’ingombro esterno, ma non alla border box misurata come larghezza dell’elemento. Questa distinzione evita di confondere spazio occupato nel layout e dimensione dichiarata.

Scelte di utilizzo e limiti

Contenuto, padding, bordo e margine: progetto e verifica.

Con box-sizing: border-box, width include contenuto, padding e bordo. A parità di 240px dichiarati, nell’esempio restano 196px per il contenuto: 240 - 40 - 4. Il margine resta fuori. È una convenzione comoda per componenti a larghezza controllata, ma non elimina la necessità di pensare agli spazi. Regole globali con * possono estendere la convenzione; gli pseudo-elementi vanno inclusi esplicitamente se necessario.

Idea chiave: I valori dichiarati sono uguali, ma il significato di width cambia. Il margine inferiore separa le due scatole e non contribuisce alla loro larghezza.

Esempio commentato

Contenuto, padding, bordo e margine: 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>Il box model</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<div class="scatola standard">content-box</div>
<div class="scatola alternativa">border-box</div>
</body>
</html>

File stile.css

.scatola {
  width: 240px;
  padding: 20px;
  border: 2px solid #174a7e;
  margin-bottom: 16px;
}
.standard { box-sizing: content-box; }
.alternativa { box-sizing: border-box; }

I valori dichiarati sono uguali, ma il significato di width cambia. Il margine inferiore separa le due scatole e non contribuisce alla loro larghezza.

ProprietàValore nell’esempioSignificato
width240pxLarghezza secondo box model e contesto.
padding20pxSpazio interno fra contenuto e bordo.
border2px solid #174a7eAbbreviazione per spessore, stile e colore del bordo.
margin-bottom16pxMargine inferiore.
box-sizingcontent-boxConvenzione per includere o escludere padding e bordo dalle dimensioni dichiarate.
Attenzione: 122px: 100 + 20 + 2.

LABORATORIO

Sperimentare: Contenuto, padding, bordo e margine

I valori dichiarati sono uguali, ma il significato di width cambia. Il margine inferiore separa le due scatole e non contribuisce alla loro larghezza.

Obiettivo: Comprendere e applicare contenuto, padding, bordo e margine 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: Seleziona ciascuna scatola nei DevTools e leggi il diagramma del box model.
  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

Inizialmente le larghezze sono 284px e 240px. Con padding 30px la prima diventa 304px e la seconda rimane 240px.

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 specificoInizialmente le larghezze sono 284px e 240px. Con padding 30px la prima diventa 304px e la seconda rimane 240px.
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

Ottieni una border box di 300px con padding 16px e bordo 2px usando border-box. Calcola anche il contenuto.

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
.scatola {
  box-sizing: border-box;
  width: 300px;
  padding: 16px;
  border: 2px solid #174a7e;
}
/* Contenuto: 300 - 32 - 4 = 264px */

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

Contenuto, padding, bordo e margine: interpretazione e applicazione.

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

1. Quale zona sta fra contenuto e bordo? ▾
Risposta: Padding. Un elemento genera una o più scatole. Nel caso a blocco qui studiato distinguiamo contenuto, padding, bordo e margine. Il contenuto ospita testo e figli; il padding aggiunge spazio interno al bordo; il margine separa la scatola da quelle esterne. Lo sfondo normalmente si estende anche sotto il padding e il bordo secondo le regole di background-clip. Il margine resta esterno e non viene riempito dallo sfondo dell’elemento.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: I valori dichiarati sono uguali, ma il significato di width cambia. Il margine inferiore separa le due scatole e non contribuisce alla loro larghezza.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: Inizialmente le larghezze sono 284px e 240px. Con padding 30px la prima diventa 304px e la seconda rimane 240px.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: 122px: 100 + 20 + 2.

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