Tutorial de CSS Grid para Principiantes
Tutorial de CSS Grid para Principiantes
CSS Grid es un sistema de maquetación bidimensional que te permite crear layouts complejos de manera sencilla. Piensa en él como una "hoja de cálculo" donde puedes colocar elementos en filas y columnas.
📋 Índice
¿Qué necesitas?
Conceptos básicos
Tu primera cuadrícula
Propiedades del contenedor
Propiedades de los ítems
Ejemplos prácticos
Ejercicios
¿Qué necesitas?
Un editor de código (VS Code recomendado)
Un navegador moderno (Chrome, Firefox, Edge)
Conocimientos básicos de HTML y CSS
Conceptos básicos
Antes de empezar, familiaricémonos con los términos:
| Concepto | Descripción |
|---|---|
| Grid Container | El elemento padre que contiene la cuadrícula |
| Grid Item | Los hijos directos del contenedor |
| Grid Line | Las líneas divisorias (horizontales y verticales) |
| Grid Cell | La unidad más pequeña (intersección de fila y columna) |
| Grid Track | El espacio entre dos líneas (fila o columna completa) |
| Grid Area | Cualquier área rectangular de celdas |
Tu primera cuadrícula
Paso 1: Estructura HTML básica
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mi primer Grid</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="grid-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>Paso 2: CSS básico
/* style.css */
.grid-container {
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px;
gap: 10px;
background-color: #f0f0f0;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 20px;
font-size: 24px;
text-align: center;
border-radius: 5px;
}Resultado: Una cuadrícula de 3 columnas y 2 filas con espacios de 10px entre celdas.
Propiedades del contenedor
1. display: grid
Convierte un elemento en contenedor grid.
2. grid-template-columns y grid-template-rows
Define el tamaño de columnas y filas.
.grid-container {
display: grid;
/* 3 columnas: 200px, 1fr, 2fr */
grid-template-columns: 200px 1fr 2fr;
/* 2 filas: 100px y auto */
grid-template-rows: 100px auto;
}Unidades especiales:
fr: fracción del espacio disponibleauto: se ajusta al contenido%,px,em, etc.
3. gap (y row-gap / column-gap)
Espacio entre celdas:
.grid-container {
gap: 20px; /* Espacio entre filas y columnas */
row-gap: 10px; /* Solo entre filas */
column-gap: 15px; /* Solo entre columnas */
}4. grid-template-areas
Define áreas con nombre (¡muy útil!):
.grid-container {
display: grid;
grid-template-columns: 1fr 3fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }<div class="grid-container">
<div class="header">Header</div>
<div class="sidebar">Sidebar</div>
<div class="content">Content</div>
<div class="footer">Footer</div>
</div>5. justify-items y align-items
Alineación de los ítems dentro de sus celdas:
.grid-container {
justify-items: center; /* Horizontal: start, end, center, stretch */
align-items: center; /* Vertical: start, end, center, stretch */
}6. justify-content y align-content
Alineación de toda la cuadrícula dentro del contenedor:
.grid-container {
justify-content: center; /* start, end, center, stretch, space-around, space-between, space-evenly */
align-content: center;
}Propiedades de los ítems
1. grid-column y grid-row
Controlan dónde empieza y termina un ítem:
.item1 {
grid-column: 1 / 3; /* Desde línea 1 hasta línea 3 */
grid-row: 1 / 2; /* Desde línea 1 hasta línea 2 */
}
/* También puedes usar span */
.item2 {
grid-column: 2 / span 2; /* Empieza en 2 y ocupa 2 columnas */
grid-row: 2 / span 1; /* Empieza en 2 y ocupa 1 fila */
}2. grid-area
Atajo para grid-row-start / grid-column-start / grid-row-end / grid-column-end:
.item3 {
grid-area: 1 / 1 / 3 / 3; /* row-start / col-start / row-end / col-end */
}3. justify-self y align-self
Alineación individual de un ítem:
.item4 {
justify-self: end; /* start, end, center, stretch */
align-self: center;
}Ejemplos prácticos
Ejemplo 1: Galería de imágenes responsive
<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>.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
padding: 20px;
}
.gallery-item {
background: #e74c3c;
color: white;
height: 150px;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
}Ejemplo 2: Layout de página completo
body {
margin: 0;
min-height: 100vh;
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 200px 1fr;
grid-template-areas:
"header header"
"nav main"
"footer footer";
}
header {
grid-area: header;
background: #2c3e50;
color: white;
padding: 20px;
}
nav {
grid-area: nav;
background: #34495e;
color: white;
padding: 20px;
}
main {
grid-area: main;
background: #ecf0f1;
padding: 20px;
}
footer {
grid-area: footer;
background: #2c3e50;
color: white;
padding: 20px;
}<header>Mi sitio web</header>
<nav>Navegación</nav>
<main>Contenido principal</main>
<footer>Pie de página</footer>Ejercicios
🏋️ Ejercicio 1: Calculadora
Crea una cuadrícula que simule una calculadora:
.calculator {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 5px;
max-width: 300px;
}
.display {
grid-column: 1 / -1; /* Ocupa todas las columnas */
background: #333;
color: white;
text-align: right;
padding: 20px;
font-size: 24px;
}
.zero {
grid-column: 1 / 3; /* El botón cero ocupa 2 columnas */
}🏋️ Ejercicio 2: Dashboard
Crea un dashboard con:
Header con logo y menú
Sidebar con navegación
Área principal con estadísticas
Footer con información
🎯 Tips y trucos
Usa
repeat()para columnas repetitivas:grid-template-columns: repeat(3, 1fr);La función
minmax()para responsive:grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));1frvsauto:1frdistribuye el espacio disponible,autose ajusta al contenidoInspecciona el grid en DevTools de Chrome/Firefox (tienen herramientas visuales excelentes)
Combina Grid con Flexbox: Usa Grid para el layout general y Flexbox para componentes pequeños
📚 Recursos adicionales
Grid Garden - Juego para aprender Grid
¡Y eso es todo! CSS Grid es increíblemente poderoso una vez que le agarras la mano. Practica con estos ejemplos y pronto estarás creando layouts complejos con facilidad.
Comentarios
Publicar un comentario