En aquest tema, aprendrem com utilitzar Flexbox per crear dissenys responsius que s'adaptin a diferents mides de pantalla. Flexbox és una eina poderosa per a la creació de dissenys flexibles i dinàmics, i és especialment útil per a la construcció de llocs web que es veuen bé tant en dispositius mòbils com en pantalles grans.
Conceptes Clau
- Contenidor Flex i Elements Flex
- Contenidor Flex: L'element pare que conté els elements flexibles.
- Elements Flex: Els elements fills dins del contenidor flex.
- Propietats del Contenidor Flex
- display: flex: Converteix un element en un contenidor flex.
- flex-direction: Defineix la direcció dels elements flex (row, row-reverse, column, column-reverse).
- flex-wrap: Permet que els elements flex es moguin a la següent línia si no hi ha prou espai (nowrap, wrap, wrap-reverse).
- justify-content: Alinea els elements flex horitzontalment (flex-start, flex-end, center, space-between, space-around, space-evenly).
- align-items: Alinea els elements flex verticalment (flex-start, flex-end, center, baseline, stretch).
- align-content: Alinea les línies de flex (flex-start, flex-end, center, space-between, space-around, stretch).
- Propietats dels Elements Flex
- flex-grow: Defineix la capacitat d'un element flex per créixer.
- flex-shrink: Defineix la capacitat d'un element flex per encongir-se.
- flex-basis: Defineix la mida inicial d'un element flex.
- align-self: Alinea un element flex individualment (auto, flex-start, flex-end, center, baseline, stretch).
Exemple Pràctic
HTML
<!DOCTYPE html> <html lang="ca"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Disseny Responsiu amb Flexbox</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> </div> </body> </html>
CSS
/* Estils bàsics */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f0f0f0; } .container { display: flex; flex-wrap: wrap; justify-content: space-around; width: 90%; max-width: 1200px; background-color: #fff; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } .item { background-color: #4CAF50; color: white; padding: 20px; margin: 10px; flex: 1 1 200px; /* flex-grow: 1, flex-shrink: 1, flex-basis: 200px */ text-align: center; border-radius: 5px; } /* Estils responsius */ @media (max-width: 768px) { .container { flex-direction: column; align-items: center; } }
Explicació del Codi
-
HTML:
- Hem creat una estructura bàsica amb un contenidor
.container
que conté sis elements.item
.
- Hem creat una estructura bàsica amb un contenidor
-
CSS:
- Contenidor Flex: Hem aplicat
display: flex
a.container
per convertir-lo en un contenidor flex. - flex-wrap: Hem utilitzat
flex-wrap: wrap
per permetre que els elements es moguin a la següent línia si no hi ha prou espai. - justify-content: Hem utilitzat
justify-content: space-around
per distribuir els elements amb espai al voltant. - Propietats dels Elements Flex: Hem utilitzat
flex: 1 1 200px
per permetre que els elements creixin i es redueixin segons sigui necessari, amb una mida inicial de 200px. - Estils Responsius: Hem utilitzat una consulta de mitjans per canviar la direcció del contenidor a
column
i alinear els elements al centre quan la mida de la pantalla és inferior a 768px.
- Contenidor Flex: Hem aplicat
Exercici Pràctic
Objectiu
Crear un disseny de galeria d'imatges responsiu utilitzant Flexbox.
Instruccions
- Crea un fitxer HTML amb una estructura de galeria.
- Aplica estils CSS per fer que la galeria sigui responsiva utilitzant Flexbox.
HTML
<!DOCTYPE html> <html lang="ca"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Galeria Responsiva</title> <link rel="stylesheet" href="styles.css"> </head> <body> <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> </body> </html>
CSS
body { font-family: Arial, sans-serif; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f0f0f0; } .gallery { display: flex; flex-wrap: wrap; justify-content: space-around; width: 90%; max-width: 1200px; background-color: #fff; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } .gallery-item { background-color: #2196F3; color: white; padding: 20px; margin: 10px; flex: 1 1 200px; text-align: center; border-radius: 5px; } @media (max-width: 768px) { .gallery { flex-direction: column; align-items: center; } }
Solució
- Hem creat una estructura HTML amb una classe
.gallery
que conté diversos elements.gallery-item
. - Hem aplicat estils CSS similars als de l'exemple anterior per fer que la galeria sigui responsiva.
Resum
En aquest tema, hem après com utilitzar Flexbox per crear dissenys responsius. Hem vist com les propietats del contenidor flex i els elements flex poden ajudar a crear dissenys flexibles que s'adapten a diferents mides de pantalla. També hem practicat amb un exemple pràctic i un exercici per reforçar els conceptes apresos.
En el següent mòdul, explorarem CSS Grid, una altra eina poderosa per a la creació de dissenys responsius i complexos.
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