6.1 Proprietà flex-direction
Flexbox offre strumenti flessibili e potenti per creare layout adattativi. Una parte importante di questo sistema sono gli assi di layout che determinano come gli elementi Flex saranno disposti all'interno del contenitore Flex. Di seguito esamineremo in dettaglio le proprietà flex-direction
e flex-wrap
, che controllano la direzione degli assi e il comportamento degli elementi Flex in caso di overflow.
La proprietà flex-direction
definisce la direzione dell'asse principale lungo la quale saranno disposti gli elementi Flex. Questa direzione può essere orizzontale o verticale, così come diretta o inversa.
Valori:
row
: l'asse principale va orizzontalmente da sinistra a destra (valore predefinito)row-reverse
: l'asse principale va orizzontalmente da destra a sinistracolumn
: l'asse principale va verticalmente dall'alto verso il bassocolumn-reverse
: l'asse principale va verticalmente dal basso verso l'alto
Esempio di utilizzo
1. Elementi disposti orizzontalmente:
.container-row {
display: flex;
flex-direction: row;
border: 2px solid #000;
padding: 10px;
}
.container-row-reverse {
display: flex;
flex-direction: row-reverse;
border: 2px solid #000;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
<div class="container-row">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
</div>
<div class="container-row-reverse">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
</div>
2. Elementi disposti verticalmente:
.container-column {
display: flex;
flex-direction: column;
border: 2px solid #000;
padding: 10px;
}
.container-column-reverse {
display: flex;
flex-direction: column-reverse;
border: 2px solid #000;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
<div class="container-column">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
</div>
<div class="container-column-reverse">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
</div>
Spiegazione del codice:
.container-row
: gli elementi sono disposti orizzontalmente da sinistra a destra.container-row-reverse
: gli elementi sono disposti orizzontalmente da destra a sinistra.container-column
: gli elementi sono disposti verticalmente dall'alto verso il basso.container-column-reverse
: gli elementi sono disposti verticalmente dal basso verso l'alto
6.2 Proprietà flex-wrap
La proprietà flex-wrap
determina se gli elementi Flex verranno disposti su una nuova riga/colonna se non si adattano in una. Questo è particolarmente utile per creare layout adattativi dove la dimensione del contenitore può cambiare a seconda del dispositivo o dello schermo.
Valori
nowrap
: gli elementi non si dispongono e restano su una singola riga/colonna (valore predefinito)wrap
: gli elementi si dispongono su una nuova riga/colonna quando necessariowrap-reverse
: gli elementi si dispongono su una nuova riga/colonna in ordine inverso
Esempi di utilizzo
Valore nowrap:
Gli elementi non si dispongono e restano su una singola riga/colonna (valore predefinito).
.container-nowrap {
display: flex;
flex-wrap: nowrap;
border: 2px solid #000;
padding: 10px;
width: 300px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
width: 100px;
}
<div class="container-nowrap">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
<div class="item">Elemento 4</div>
</div>
Valore wrap:
Gli elementi si dispongono su una nuova riga/colonna quando necessario.
.container-wrap {
display: flex;
flex-wrap: wrap;
border: 2px solid #000;
padding: 10px;
width: 300px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
width: 100px;
}
<div class="container-wrap">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
<div class="item">Elemento 4</div>
</div>
Valore wrap-reverse:
Gli elementi si dispongono su una nuova riga/colonna in ordine inverso.
.container-wrap-reverse {
display: flex;
flex-wrap: wrap-reverse;
border: 2px solid #000;
padding: 10px;
width: 300px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
width: 100px;
}
<div class="container-wrap-reverse">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
<div class="item">Elemento 4</div>
</div>
Spiegazione del codice:
.container-nowrap
: Gli elementi Flex sono disposti su una singola riga, anche se escono dai bordi del contenitore.container-wrap
: Gli elementi Flex si dispongono su una nuova riga se non si adattano a una singola.container-wrap-reverse
: Gli elementi Flex si dispongono su una nuova riga in ordine inverso
6.3 Uso di flex-direction e flex-wrap
Le proprietà flex-direction
e flex-wrap
possono essere combinate utilizzando la proprietà abbreviata flex-flow
. Questa proprietà consente di impostare contemporaneamente la direzione dell'asse e il wrapping degli elementi.
Sintassi:
.container {
flex-flow: [flex-direction] [flex-wrap];
}
Esempio di utilizzo:
.container {
display: flex;
flex-flow: row wrap;
border: 2px solid #000;
padding: 10px;
width: 300px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
width: 100px;
}
<div class="container">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
<div class="item">Elemento 4</div>
<div class="item">Elemento 5</div>
</div>
Spiegazione del codice:
-
.container
: Contenitore Flex con uso combinato diflex-direction: row;
eflex-wrap: wrap;
, il che significa che gli elementi sono disposti orizzontalmente e si dispongono su una nuova riga quando necessario
GO TO FULL VERSION