Elements Bloc, Grid i Flexbox
En aquest capítol veurem la diferència entre elements en bloc i en línia, i aprofundirem en dos sistemes de layout molt potents de CSS: Grid Layout i Flexbox.
Elements en bloc vs en línia
Elements en bloc
- Ocupen tot l’ample disponible del seu contenidor
- Comencen en una nova línia
- Poden contindre altres elements en bloc o en línia
Exemples: div, section, article, main, header, footer, p, ul, ol, table, h1–h6
display: block;
Elements en línia
- No comencen en nova línia
- Només ocupen l’espai necessari
- No poden contenir elements en bloc
Exemples: a, span, strong, em, code, abbr, input, label, button, select, textarea
display: inline;
CSS Grid Layout
Sistema de disseny bidimensional (files i columnes).
Propietats del contenidor
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto auto;
gap: 20px;
Posicionar elements fills
.grid-item {
grid-column: 1 / 3;
grid-row: 2 / 3;
}
Altres propietats:
grid-auto-rows,grid-auto-columnsorderjustify-items,align-items(nivell general)justify-self,align-self(nivell individual)
Exemple d’estructura bàsica
<div class="grid">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
</div>
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
Flexbox
Sistema de layout unidimensional (fila o columna).
Contenidor Flex
display: flex;
flex-direction: row; /* o column */
flex-wrap: wrap;
gap: 10px;
justify-content: center;
align-items: center;
Elements fills
.flex-item {
order: 2;
flex-grow: 1;
align-self: flex-end;
}
Propietats Flex més importants
| Propietat | Descripció |
|---|---|
flex-direction | Direcció (row o column) |
flex-wrap | Si els elements poden saltar de línia |
justify-content | Alineació horitzontal |
align-items | Alineació vertical (dins línia) |
align-content | Alineació de múltiples línies |
gap | Espai entre elements |
order | Ordre dels fills |
flex-grow | Ocupació proporcional |
align-self | Alineació individual |
Diferència align-items vs align-content
align-items: alineació d’elements dins la mateixa líniaalign-content: alineació de línies senceres (funciona siflex-wrap≠nowrap)
Recursos pràctics
Aquest capítol et permet dominar dos sistemes moderns de layout: Grid (bidimensional) i Flexbox (unidimensional), per crear estructures complexes, responsives i mantingudes.