CSS Grid és un sistema de disseny potent i flexible que permet crear dissenys de pàgines web complexos i responsius amb facilitat. A diferència d'altres mètodes de disseny com Flexbox, que se centra en l'alineació d'elements en una sola dimensió (fila o columna), CSS Grid permet treballar en dues dimensions (files i columnes) simultàniament.
Conceptes Clau de CSS Grid
Abans de començar a utilitzar CSS Grid, és important comprendre alguns conceptes bàsics:
- Contenidor Grid: L'element que conté els elements grid. Es defineix establint la propietat
display: grid
odisplay: inline-grid
en un element. - Elements Grid: Els elements fills directes del contenidor grid. Aquests elements es col·loquen dins de la graella definida pel contenidor grid.
- Tracks: Les files i columnes de la graella.
- Grid Lines: Les línies que divideixen les files i columnes de la graella.
- Grid Areas: Àrees rectangulars dins de la graella que poden ser ocupades per un o més elements grid.
Sintaxi Bàsica
Definició del Contenidor Grid
Per definir un contenidor grid, simplement afegeix la propietat display: grid
a l'element HTML:
<div class="grid-container"> <div class="grid-item">1</div> <div class="grid-item">2</div> <div class="grid-item">3</div> <div class="grid-item">4</div> </div>
Definició de Files i Columnes
Utilitza les propietats grid-template-columns
i grid-template-rows
per definir el nombre i la mida de les columnes i files:
.grid-container { display: grid; grid-template-columns: 100px 200px; grid-template-rows: 100px 100px; }
Aquest exemple crea una graella amb dues columnes (100px i 200px d'amplada) i dues files (ambdues de 100px d'alçada).
Col·locació d'Elements Grid
Els elements grid es col·loquen automàticament dins de la graella segons l'ordre en què apareixen en el codi HTML. No obstant això, pots especificar la posició exacta d'un element utilitzant les propietats grid-column
i grid-row
:
.grid-item:nth-child(1) { grid-column: 1 / 3; /* Ocupa des de la columna 1 fins a la 3 */ grid-row: 1 / 2; /* Ocupa des de la fila 1 fins a la 2 */ }
Exemple Pràctic
A continuació, es mostra un exemple pràctic d'ús de CSS Grid per crear un disseny senzill:
<!DOCTYPE html> <html lang="ca"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Exemple de CSS Grid</title> <style> .grid-container { display: grid; grid-template-columns: 1fr 2fr 1fr; grid-template-rows: auto; gap: 10px; /* Espai entre els elements */ } .grid-item { background-color: #ccc; padding: 20px; text-align: center; } </style> </head> <body> <div class="grid-container"> <div class="grid-item">1</div> <div class="grid-item">2</div> <div class="grid-item">3</div> <div class="grid-item">4</div> <div class="grid-item">5</div> <div class="grid-item">6</div> </div> </body> </html>
Explicació del Codi
- Contenidor Grid: Definim
.grid-container
com un contenidor grid ambdisplay: grid
. - Columnes i Files: Utilitzem
grid-template-columns
per definir tres columnes amb amplades relatives (1fr 2fr 1fr
). Això significa que la segona columna serà el doble d'ampla que les altres dues. - Espaiat: Utilitzem
gap
per afegir espai entre els elements grid. - Elements Grid: Cada
.grid-item
és un element grid que es col·loca automàticament dins de la graella.
Exercici Pràctic
Exercici
Crea una pàgina HTML amb una graella de 3x3 on cada cel·la contingui un número del 1 al 9. Les cel·les han de tenir una mida de 100px x 100px i un espai de 10px entre elles.
Solució
<!DOCTYPE html> <html lang="ca"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Exercici de CSS Grid</title> <style> .grid-container { display: grid; grid-template-columns: repeat(3, 100px); grid-template-rows: repeat(3, 100px); gap: 10px; } .grid-item { background-color: #ccc; display: flex; align-items: center; justify-content: center; font-size: 24px; } </style> </head> <body> <div class="grid-container"> <div class="grid-item">1</div> <div class="grid-item">2</div> <div class="grid-item">3</div> <div class="grid-item">4</div> <div class="grid-item">5</div> <div class="grid-item">6</div> <div class="grid-item">7</div> <div class="grid-item">8</div> <div class="grid-item">9</div> </div> </body> </html>
Explicació de la Solució
- Contenidor Grid: Definim
.grid-container
com un contenidor grid ambdisplay: grid
. - Columnes i Files: Utilitzem
grid-template-columns
igrid-template-rows
ambrepeat(3, 100px)
per crear tres columnes i tres files de 100px cadascuna. - Espaiat: Utilitzem
gap
per afegir 10px d'espai entre les cel·les. - Elements Grid: Cada
.grid-item
és un element grid que es col·loca automàticament dins de la graella. Utilitzemdisplay: flex
,align-items: center
ijustify-content: center
per centrar el text dins de cada cel·la.
Conclusió
CSS Grid és una eina poderosa per crear dissenys de pàgines web complexos i responsius. Amb els conceptes bàsics i la sintaxi que hem cobert en aquesta introducció, ja pots començar a experimentar amb CSS Grid i crear els teus propis dissenys. En els següents temes, explorarem més a fons les propietats del contenidor grid i dels elements grid per obtenir un control encara més gran sobre els teus dissenys.
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