CSS Fogli Di Stile

Flex Grow Flex Shrink E Flex Basis

Flex grow flex shrink e flex basis: teoria, esempi e sperimentazione nel browser.

Prerequisiti: Ritorno a capo con flex-wrap.

Crescita, riduzione e base flex

Crescita, riduzione e base flex: fondamenti.

La proprietà abbreviata flex combina crescita, riduzione e dimensione di base. flex: 1 1 12rem indica che l’elemento può crescere, può ridursi e parte da una base di 12rem. flex-basis partecipa al calcolo lungo l’asse principale: con row riguarda la dimensione orizzontale, con column quella verticale. Non è sempre una larghezza definitiva: lo spazio disponibile, le altre scatole e i vincoli minimi o massimi influenzano il risultato.

Come funziona: crescita, riduzione e base flex

Crescita, riduzione e base flex: comportamento nel browser.

flex-grow distribuisce lo spazio positivo rimasto dopo il calcolo delle basi, secondo fattori relativi. Un elemento con fattore 2 riceve una quota doppia dello spazio aggiuntivo di uno con fattore 1 nel caso semplice, ma non diventa necessariamente largo il doppio perché le basi contribuiscono alla dimensione finale. Quando manca spazio, flex-shrink partecipa alla riduzione ponderando anche la dimensione di base: i soli fattori non descrivono tutta la distribuzione.

Scelte di utilizzo e limiti

Crescita, riduzione e base flex: progetto e verifica.

Gli elementi flex hanno spesso un minimo automatico legato al contenuto. Una stringa lunga può quindi impedire la riduzione prevista. min-width: 0 permette, nel layout orizzontale qui proposto, di scendere sotto quel minimo; overflow-wrap aiuta poi a mantenere leggibile il testo. Non risolvere tutto comprimendo alla cieca: prova una base ragionevole, wrap e contenuti realistici. Le schede devono funzionare anche quando un titolo è più lungo degli altri.

Idea chiave: Le schede partono da una base condivisa, crescono per occupare spazio e possono disporsi su più righe. Il minimo esplicito e la gestione delle parole evitano rigidità indesiderate.

Esempio commentato

Crescita, riduzione e base flex: 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>flex-grow, flex-shrink e flex-basis</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<div class="gruppo">
<article class="scheda">Prima scheda</article>
<article class="scheda">Seconda scheda con un titolo più lungo</article>
<article class="scheda">Terza scheda</article>
</div>
</body>
</html>

File stile.css

.gruppo { display: flex; flex-wrap: wrap; gap: 1rem; }
.scheda {
  flex: 1 1 12rem;
  min-width: 0;
  padding: 1rem;
  border: 1px solid #174a7e;
  overflow-wrap: anywhere;
}

Le schede partono da una base condivisa, crescono per occupare spazio e possono disporsi su più righe. Il minimo esplicito e la gestione delle parole evitano rigidità indesiderate.

ProprietàValore nell’esempioSignificato
displayflexTipo di scatola e contesto di layout.
flex-wrapwrapPossibilità di distribuire gli item su più linee.
gap1remDistanza fra elementi o tracce nel layout pertinente.
flex1 1 12remCrescita, riduzione e dimensione di base dell’item flex.
min-width0Limite inferiore alla larghezza.
padding1remSpazio interno fra contenuto e bordo.
Attenzione: No. Distribuisce una quota dello spazio positivo; le basi e gli altri vincoli contribuiscono alle dimensioni finali.

LABORATORIO

Sperimentare: Crescita, riduzione e base flex

Le schede partono da una base condivisa, crescono per occupare spazio e possono disporsi su più righe. Il minimo esplicito e la gestione delle parole evitano rigidità indesiderate.

Obiettivo: Comprendere e applicare crescita, riduzione e base flex 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: Imposta flex-grow: 2 soltanto sulla prima e confronta l’espansione.
  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

Le schede si espandono e cambiano riga quando lo spazio lo richiede. Il fattore di crescita influenza lo spazio aggiunto, non un rapporto fisso tra larghezze finali.

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 specificoLe schede si espandono e cambiano riga quando lo spazio lo richiede. Il fattore di crescita influenza lo spazio aggiunto, non un rapporto fisso tra larghezze finali.
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

Fai partire le schede da 16rem mantenendo crescita e riduzione abilitate.

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
.scheda {
  flex: 1 1 16rem;
  min-width: 0;
}

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

Crescita, riduzione e base flex: interpretazione e applicazione.

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

1. La terza componente di flex: 1 1 12rem è quale? ▾
Risposta: flex-basis. La proprietà abbreviata flex combina crescita, riduzione e dimensione di base. flex: 1 1 12rem indica che l’elemento può crescere, può ridursi e parte da una base di 12rem. flex-basis partecipa al calcolo lungo l’asse principale: con row riguarda la dimensione orizzontale, con column quella verticale. Non è sempre una larghezza definitiva: lo spazio disponibile, le altre scatole e i vincoli minimi o massimi influenzano il risultato.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: Le schede partono da una base condivisa, crescono per occupare spazio e possono disporsi su più righe. Il minimo esplicito e la gestione delle parole evitano rigidità indesiderate.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: Le schede si espandono e cambiano riga quando lo spazio lo richiede. Il fattore di crescita influenza lo spazio aggiunto, non un rapporto fisso tra larghezze finali.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: No. Distribuisce una quota dello spazio positivo; le basi e gli altri vincoli contribuiscono alle dimensioni finali.

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