CHI HA PAURA DELL’INTELLIGENZA ARTIFICIALE?
Flexbox è un modello di layout CSS pensato per disporre elementi in modo flessibile e responsivo, sia in orizzontale che in verticale.
L’elemento genitore diventa contenitore flessibile con:
display: flex;
Proprietà principali del container:
flex-direction: direzione principale degli elementi (row, row-reverse, column, column-reverse).
justify-content: allineamento lungo l’asse principale (flex-start, center, space-between, space-around).
align-items: allineamento lungo l’asse trasversale (flex-start, center, stretch, baseline).
flex-wrap: gestione del ritorno a capo (nowrap, wrap, wrap-reverse).
Elementi figli (items) del container:
flex-grow: capacità di espandersi rispetto agli altri elementi.
flex-shrink: capacità di ridursi.
flex-basis: dimensione iniziale preferita.
align-self: sovrascrive l’allineamento lungo l’asse trasversale per un singolo item.
| Proprietà | Valori comuni | Funzione |
|---|---|---|
| flex-direction | row, row-reverse, column, column-reverse | Direzione principale degli elementi |
| justify-content | flex-start, flex-end, center, space-between, space-around | Allineamento lungo l’asse principale |
| align-items | flex-start, flex-end, center, stretch | Allineamento lungo l’asse trasversale |
| flex-wrap | nowrap, wrap, wrap-reverse | Consente il ritorno a capo degli elementi |
Esempio Container
.container {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
}
| Proprietà | Funzione |
|---|---|
| flex-grow | Espansione proporzionale |
| flex-shrink | Riduzione proporzionale |
| flex-basis | Dimensione base dell’item |
| flex | shorthand per flex-grow flex-shrink flex-basis |
| align-self | Allineamento individuale lungo l’asse trasversale |
Esempio Item
.item {
flex: 1 1 200px; /* grow=1, shrink=1, base=200px */
margin: 10px;
padding: 20px;
background-color: lightblue;
text-align: center;
}
<nav class="navbar">
<a href="#">Home</a>
<a href="#">Servizi</a>
<a href="#">Contatti</a>
</nav>
.navbar {
display: flex;
justify-content: space-around;
background-color: #333;
padding: 10px;
}
.navbar a {
color: white;
text-decoration: none;
padding: 8px 15px;
}
.navbar a:hover {
background-color: #555;
border-radius: 5px;
}
Container flessibile con items che si adattano allo spazio:
.grid {
display: flex;
flex-wrap: wrap;
gap: 15px; /* distanza tra items */
}
.grid-item {
flex: 1 1 200px; /* dimensione minima 200px, cresce se possibile */
padding: 20px;
background-color: #a2d5f2;
text-align: center;
border-radius: 8px;
}
Creare un layout con 3 colonne che si ridimensionano in base alla larghezza dello schermo.
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Layout Flexbox 3 colonne</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<div class="container">
<div class="item">Colonna 1</div>
<div class="item">Colonna 2</div>
<div class="item">Colonna 3</div>
</div>
</body>
</html>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
background-color: #f2f2f2;
}
.container {
display: flex;
flex-wrap: wrap; /* ritorno a capo su schermi piccoli */
justify-content: space-between;
gap: 20px; /* distanza tra colonne */
}
.item {
flex: 1 1 30%; /* cresce, si riduce, base 30% del container */
padding: 20px;
background-color: #4fa3f2;
color: white;
text-align: center;
border-radius: 10px;
}
/* Responsive: su schermi piccoli le colonne diventano a tutta larghezza */
@media (max-width: 768px) {
.item {
flex: 1 1 100%;
}
}
Tre colonne affiancate su desktop.
Si ridimensionano automaticamente su tablet o mobile.
Spaziatura uniforme tra le colonne grazie a gap.
Bordi arrotondati e sfondo colorato per estetica.
Commenti
Posta un commento