5.1 Concetti di base di Flexbox
Flexbox (Flexible Box Layout) è un potente sistema di layout CSS che offre modi flessibili ed efficienti per distribuire lo spazio e allineare gli elementi all'interno di un contenitore. Flexbox è particolarmente utile per creare layout complessi e design responsivi. Ora esamineremo i fondamenti di Flexbox, inclusa la creazione di container e elementi Flex, oltre all'uso della proprietà display: flex;.
Concetti di base di Flexbox
Flexbox è composto da due componenti chiave:
- Contenitore Flex: l'elemento genitore che include elementi Flex.
- Elementi Flex: gli elementi figli all'interno del contenitore Flex che vengono allineati e distribuiti secondo le regole di Flexbox.
Contenitore Flex
Il contenitore Flex viene creato utilizzando la proprietà display: flex; o display: inline-flex;. Il contenitore Flex gestisce il posizionamento degli elementi figli (elementi Flex) e offre numerose possibilità per il loro allineamento e distribuzione.
.container {
display: flex; /* o inline-flex */
}
Esempio di utilizzo:
.container {
display: flex;
border: 2px solid #000;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
<div class="container">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
</div>
Spiegazione del codice:
-
.container: contenitore Flex creato condisplay: flex;. All'interno di questo contenitore, gli elementi vengono allineati e distribuiti secondo le regole di Flexbox .item: gli elementi Flex che sono gli elementi figli del contenitore Flex
5.2 Proprietà del contenitore Flex
La proprietà display: flex; definisce un elemento come contenitore Flex. Gli elementi figli di questo contenitore diventano automaticamente elementi Flex e iniziano a seguire le regole di Flexbox.
display: flex;
Crea un contenitore Flex a blocco. Il contenitore Flex si comporta come un elemento a blocco, occupando tutta la larghezza disponibile dell'elemento genitore.
.container {
display: flex;
}
display: inline-flex;
Crea un contenitore Flex in linea. Il contenitore Flex si comporta come un elemento in linea, occupando solo la larghezza necessaria e può essere posizionato accanto ad altri elementi in linea.
.inline-container {
display: inline-flex;
}
Esempio di utilizzo:
.inline-container {
display: inline-flex;
border: 2px solid #000;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
<div class="inline-container">
<div class="item">Elemento 1</div>
<div class="item">Elemento 2</div>
<div class="item">Elemento 3</div>
</div>
<div class="inline-container">
<div class="item">Elemento 4</div>
<div class="item">Elemento 5</div>
</div>
Spiegazione del codice:
inline-container— è un contenitore Flex creato condisplay: inline-flex;. All'interno di questo contenitore, gli elementi si allineano e si distribuiscono secondo le regole di Flexbox. I contenitori si comportano come elementi in linea e si posizionano uno accanto all'altro.
5.3 Proprietà degli elementi Flex
1. La proprietà flex è una scorciatoia per impostare flex-grow, flex-shrink e flex-basis. Permette di gestire come gli elementi Flex si espandono e si contraggono per riempire lo spazio disponibile.
Sintassi:
.element {
flex: [flex-grow] [flex-shrink] [flex-basis];
}
Esempio di utilizzo:
.item {
flex: 1;
}
2. Proprietà order
La proprietà order definisce l'ordine in cui gli elementi Flex sono disposti all'interno del contenitore Flex. Di default, tutti gli elementi hanno il valore order: 0;.
Valori
Numeri interi. Gli elementi con un valore inferiore vengono posizionati prima degli elementi con un valore maggiore.
Sintassi:
.element {
order: value;
}
Esempio di utilizzo:
.container {
display: flex;
border: 2px solid #000;
padding: 10px;
}
.item-1 {
order: 2;
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
.item-2 {
order: 1;
background-color: #2ecc71;
color: white;
padding: 10px;
margin: 5px;
}
.item-3 {
order: 3;
background-color: #e74c3c;
color: white;
padding: 10px;
margin: 5px;
}
<div class="container">
<div class="item-1">Elemento 1</div>
<div class="item-2">Elemento 2</div>
<div class="item-3">Elemento 3</div>
</div>
Spiegazione del codice:
.item-1: ha il valoreorder: 2, quindi verrà posizionato dopo l'elemento conorder: 1.item-2: ha il valoreorder: 1, quindi verrà posizionato per primo.item-3: ha il valoreorder: 3, quindi verrà posizionato per ultimo
GO TO FULL VERSION