En aquest tema, aprendrem a utilitzar Flexbox per crear dissenys web flexibles i responsius. Flexbox és una eina poderosa que simplifica la creació de dissenys complexos amb CSS. Ens centrarem en les propietats clau de Flexbox i veurem exemples pràctics per entendre com aplicar-les en situacions reals.
Conceptes Clau de Flexbox
Abans de començar amb els exemples pràctics, és important comprendre alguns conceptes clau de Flexbox:
- Contenidor Flex (Flex Container): L'element pare que conté els elements flexibles.
- Elements Flex (Flex Items): Els elements fills directes del contenidor flex.
- Eixos de Flexbox:
- Eix Principal (Main Axis): L'eix principal al llarg del qual es distribueixen els elements flexibles.
- Eix Creuat (Cross Axis): L'eix perpendicular a l'eix principal.
Propietats del Contenidor Flex
Les propietats del contenidor flex ens permeten definir com es distribueixen i s'alineen els elements flexibles dins del contenidor.
display: flex
Aquesta propietat converteix un element en un contenidor flex.
flex-direction
Defineix la direcció dels elements flexibles dins del contenidor.
row
(per defecte): Els elements es disposen en una fila horitzontal.column
: Els elements es disposen en una columna vertical.row-reverse
: Els elements es disposen en una fila horitzontal inversa.column-reverse
: Els elements es disposen en una columna vertical inversa.
justify-content
Alinea els elements flexibles al llarg de l'eix principal.
flex-start
(per defecte): Els elements s'alineen al començament de l'eix principal.flex-end
: Els elements s'alineen al final de l'eix principal.center
: Els elements s'alineen al centre de l'eix principal.space-between
: Els elements es distribueixen uniformement amb espai entre ells.space-around
: Els elements es distribueixen uniformement amb espai al voltant d'ells.
.container { display: flex; justify-content: center; /* o flex-start, flex-end, space-between, space-around */ }
align-items
Alinea els elements flexibles al llarg de l'eix creuat.
stretch
(per defecte): Els elements s'estiren per omplir l'eix creuat.flex-start
: Els elements s'alineen al començament de l'eix creuat.flex-end
: Els elements s'alineen al final de l'eix creuat.center
: Els elements s'alineen al centre de l'eix creuat.baseline
: Els elements s'alineen segons la seva línia base.
flex-wrap
Defineix si els elements flexibles es poden ajustar a múltiples línies.
nowrap
(per defecte): Els elements es mantenen en una sola línia.wrap
: Els elements es poden ajustar a múltiples línies.wrap-reverse
: Els elements es poden ajustar a múltiples línies en ordre invers.
Propietats dels Elements Flex
Les propietats dels elements flex ens permeten definir com es comporten els elements individuals dins del contenidor flex.
flex-grow
Defineix la capacitat d'un element per créixer en proporció als altres elements flexibles.
flex-shrink
Defineix la capacitat d'un element per reduir-se en proporció als altres elements flexibles.
flex-basis
Defineix la mida inicial d'un element abans que es distribueixi l'espai restant.
align-self
Alinea un element individualment al llarg de l'eix creuat, sobreescrivint align-items
del contenidor.
auto
(per defecte): L'element segueix l'alineació definida peralign-items
.flex-start
: L'element s'alinea al començament de l'eix creuat.flex-end
: L'element s'alinea al final de l'eix creuat.center
: L'element s'alinea al centre de l'eix creuat.baseline
: L'element s'alinea segons la seva línia base.stretch
: L'element s'estira per omplir l'eix creuat.
Exemple Pràctic: Crear un Disseny de Galeria
Ara que hem vist les propietats clau de Flexbox, crearem un disseny de galeria d'imatges utilitzant Flexbox.
HTML
<div class="gallery"> <div class="gallery-item">1</div> <div class="gallery-item">2</div> <div class="gallery-item">3</div> <div class="gallery-item">4</div> <div class="gallery-item">5</div> <div class="gallery-item">6</div> </div>
CSS
.gallery { display: flex; flex-wrap: wrap; justify-content: space-around; } .gallery-item { background-color: #f0f0f0; border: 1px solid #ccc; flex-basis: calc(33.333% - 20px); margin: 10px; text-align: center; padding: 20px; box-sizing: border-box; }
Explicació
- Contenidor Flex: La classe
.gallery
és el contenidor flex ambdisplay: flex
,flex-wrap: wrap
per permetre que els elements es distribueixin en múltiples línies, ijustify-content: space-around
per distribuir els elements amb espai al voltant. - Elements Flex: La classe
.gallery-item
defineix els elements flexibles ambflex-basis: calc(33.333% - 20px)
per ajustar la mida inicial de cada element, imargin: 10px
per afegir espai entre els elements.
Aquest codi crea una galeria d'imatges responsiva on cada element ocupa aproximadament un terç de l'ample del contenidor, amb espai al voltant de cada element.
Exercici Pràctic
Crea un disseny de capçalera amb Flexbox que contingui un logotip a l'esquerra, un menú de navegació al centre i un botó de cerca a la dreta.
HTML
<header class="header"> <div class="logo">Logo</div> <nav class="nav"> <a href="#">Home</a> <a href="#">About</a> <a href="#">Services</a> <a href="#">Contact</a> </nav> <button class="search-button">Search</button> </header>
CSS
.header { display: flex; justify-content: space-between; align-items: center; padding: 10px 20px; background-color: #333; color: #fff; } .logo { font-size: 1.5em; } .nav a { margin: 0 10px; color: #fff; text-decoration: none; } .search-button { background-color: #555; color: #fff; border: none; padding: 10px 20px; cursor: pointer; }
Solució
- Contenidor Flex: La classe
.header
és el contenidor flex ambdisplay: flex
,justify-content: space-between
per distribuir els elements amb espai entre ells, ialign-items: center
per alinear els elements al centre de l'eix creuat. - Elements Flex: Les classes
.logo
,.nav
, i.search-button
defineixen els elements flexibles dins del contenidor.
Aquest codi crea una capçalera responsiva amb un logotip a l'esquerra, un menú de navegació al centre i un botó de cerca a la dreta.
Conclusió
Flexbox és una eina poderosa per crear dissenys web flexibles i responsius. Amb les propietats clau de Flexbox, podem controlar la distribució, alineació i mida dels elements dins d'un contenidor flex. Practicar amb exemples reals ens ajudarà a comprendre millor com aplicar Flexbox en els nostres projectes web.
Domini del CSS: De Principiant a Avançat
Mòdul 1: Introducció al CSS
- Què és el CSS?
- Sintaxi i Selectors de CSS
- Com Afegir CSS a HTML
- Propietats Bàsiques de CSS
- Colors en CSS
- Unitats i Mesures en CSS
Mòdul 2: Estilització de Text i Fonts
- Propietats de Text
- Propietats de Fonts
- Integració de Google Fonts
- Alineació i Espaiat de Text
- Decoració i Transformació de Text
Mòdul 3: Model de Caixa i Disseny
- Comprendre el Model de Caixa
- Marge i Farciment
- Vora i Contorn
- Amplada i Alçada
- Dimensionament de Caixa
- Propietat de Visualització de CSS
Mòdul 4: Posicionament i Flotació
- Propietat de Posició de CSS
- Posicionament Estàtic, Relatiu, Absolut i Fix
- Flotació i Neteja de CSS
- Crear Dissenys amb Flotació
- Índex Z de CSS
Mòdul 5: Flexbox
- Introducció a Flexbox
- Propietats del Contenidor Flex
- Propietats dels Elements Flex
- Crear Dissenys amb Flexbox
- Disseny Responsiu amb Flexbox
Mòdul 6: CSS Grid
- Introducció a CSS Grid
- Propietats del Contenidor Grid
- Propietats dels Elements Grid
- Crear Dissenys amb CSS Grid
- Disseny Responsiu amb CSS Grid
Mòdul 7: Tècniques Avançades de CSS
Mòdul 8: Disseny Responsiu
- Introducció al Disseny Responsiu
- Consultes de Mitjans
- Tipografia Responsiva
- Imatges Responsives
- Disseny Mobile-First
Mòdul 9: Preprocessadors i Frameworks
- Introducció als Preprocessadors de CSS
- Conceptes Bàsics de Sass
- Conceptes Bàsics de Less
- Introducció als Frameworks de CSS
- Ús de Bootstrap
Mòdul 10: Millors Pràctiques i Optimització
- Millors Pràctiques de CSS
- Organització del Codi CSS
- Minificació de CSS
- Optimització del Rendiment de CSS
- Depuració de CSS