Prerequisiti: Bordi.
Dimensionare con box-sizing
Dimensionare con box-sizing: fondamenti.
Con content-box, width indica la dimensione del contenuto: padding e bordo si aggiungono. Con border-box, width include contenuto, padding e bordo. Il margine resta fuori in entrambi i casi. Una scatola dichiarata larga 300px con padding 20px per lato e bordo 2px per lato ha border box di 344px in content-box, ma di 300px in border-box.
Come funziona: dimensionare con box-sizing
Dimensionare con box-sizing: comportamento nel browser.
Con border-box lo spazio interno disponibile per il contenuto diminuisce quando aumenti padding e bordo. Non significa che tutte le dimensioni siano magicamente costanti: minimi, massimi, contenuti e contesto di layout possono intervenire. Se il padding è enorme rispetto alla misura dichiarata, non aspettarti una larghezza di contenuto negativa.
Scelte di utilizzo e limiti
Dimensionare con box-sizing: progetto e verifica.
Una convenzione globale spesso usa *, *::before, *::after per assegnare border-box anche agli pseudo-elementi. Questa convenzione facilita i calcoli, ma va conosciuta quando leggi un foglio esistente. Misura il box model nei DevTools invece di dedurre l’ingombro dal solo width.
Esempio commentato
Dimensionare con box-sizing: 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>box-sizing</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: 300px; padding: 20px; border: 2px solid navy; margin-bottom: 1rem; }
.standard { box-sizing: content-box; }
.alternativa { box-sizing: border-box; }
Risultato nel browser
Le due dichiarazioni width coincidono; la prima border box misura 344px, la seconda 300px.
| Proprietà | Valore nell’esempio | Significato |
|---|---|---|
width | 300px | Larghezza secondo box model e contesto. |
padding | 20px | Spazio interno fra contenuto e bordo. |
border | 2px solid navy | Abbreviazione per spessore, stile e colore del bordo. |
margin-bottom | 1rem | Margine inferiore. |
box-sizing | content-box | Convenzione per includere o escludere padding e bordo dalle dimensioni dichiarate. |
LABORATORIO
Sperimentare: Dimensionare con box-sizing
Le due dichiarazioni width coincidono; la prima border box misura 344px, la seconda 300px.
Obiettivo: Comprendere e applicare dimensionare con box-sizing 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
- Osserva il punto di partenza: apri l’esempio, confronta markup e regole e individua il selettore o il contesto di layout rilevante.
- Esegui la modifica: Aumenta il padding a 30px e misura nuovamente le due scatole.
- Salva e ricarica la pagina dopo ogni modifica. Confronta gli elementi che devono cambiare con quelli che devono restare invariati.
- Ispeziona il risultato: usa il menu Ispeziona e controlla Styles/Regole e Computed/Calcolato. Per layout Flex o Grid attiva l’overlay, se disponibile.
- 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.
La prima border box diventa 364px; la seconda resta 300px con un contenuto più stretto.
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
| Controllo | Criterio |
|---|---|
| Effetto specifico | La prima border box diventa 364px; la seconda resta 300px con un contenuto più stretto. |
| Corrispondenza del codice | Individua la dichiarazione o la relazione HTML responsabile della differenza. |
| Persistenza | Riporta la modifica nel file e verifica dopo un ricaricamento. |
| Spiegazione | Motiva la differenza senza affidarti soltanto a uno screenshot. |
Esercizio autonomo
Definisci border-box come convenzione generale, includendo gli pseudo-elementi.
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.
*, *::before, *::after { box-sizing: border-box; }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
Dimensionare con box-sizing: interpretazione e applicazione.
Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.
1. Quali zone include width con border-box? ▾
2. Come si interpreta il codice dell’esempio? ▾
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Riferimento tecnico: MDN — riferimento CSS. Cerca le proprietà o i selettori utilizzati nell’esempio.