edubun
Español

Fundamentos de grid

grid-template-columns: repeat(3, 1fr) crea tres columnas iguales en una sola línea, y el navegador coloca cada hijo en la siguiente celda libre.

Filas y columnas a la vez

Grid, el módulo CSS Grid Layout, está hecho para la maquetación en dos dimensiones: filas y columnas a la vez. Dibujas la cuadrícula en el contenedor y los elementos caen en sus celdas. Mientras que flexbox parte de los elementos y deja que ellos resuelvan sus tamaños, grid parte de la maquetación y acomoda los elementos en ella. Por eso es la herramienta natural para galerías de fotos, listados de tarjetas y la forma general de una página con encabezado, barra lateral, contenido principal y pie de página.

.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* three equal columns */
  gap: 10px;
}
.gallery .wide { grid-column: span 2; }    /* this item covers two columns */
Una galería de tres columnas con un elemento ancho.

Pistas y la unidad fr

grid-template-columns enumera el ancho de cada columna, llamada pista. Puedes usar cualquier longitud, como 200px 1fr, pero grid agrega una unidad propia: fr, una fracción del espacio libre. 1fr 1fr 1fr crea tres columnas iguales; 2fr 1fr hace que la primera columna sea el doble de ancha que la segunda. La unidad fr reparte solo el espacio que queda después de las pistas fijas y los gaps, así que 200px 1fr da una barra lateral de 200 píxeles y deja que la columna principal tome el resto. repeat(3, 1fr) es una forma más corta de escribir 1fr 1fr 1fr. grid-template-rows hace lo mismo con las filas, pero a menudo las filas se dejan tal cual, tan altas como su contenido.

repeat(3, 1fr) con un gap de 20px. Los números de abajo son las líneas de la cuadrícula, de 1 a 4. El elemento verde abarca dos columnas, de la línea 1 a la línea 3.

Colocar los elementos

Por defecto, los elementos llenan la cuadrícula en el orden del código, una celda cada uno, de izquierda a derecha y luego a la fila siguiente. Para agrandar un elemento, grid-column: span 2 le hace ocupar dos columnas, y grid-row: span 2, dos filas. Las líneas entre pistas se numeran desde 1, así que una cuadrícula de tres columnas tiene las líneas de 1 a 4, y grid-column: 1 / 3 significa de la línea 1 a la línea 3. grid-column: 1 / -1 estira un elemento a todo el ancho, porque los números negativos cuentan desde el final.

Ponerles nombre a las áreas

Para maquetar una página, grid-template-areas te permite dibujar la maquetación con palabras. Cada cadena entre comillas es una fila y cada palabra, una celda; repetir una palabra hace que un área abarque esas celdas. Luego cada elemento recibe grid-area con el nombre correspondiente. La maquetación de abajo se lee casi como un boceto: el encabezado arriba de lado a lado, la barra lateral y el contenido principal uno junto al otro, y el pie de página abajo. Cambiar la maquetación para un celular significa reescribir solo estas pocas cadenas, a menudo dentro de una media query.

.page {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-areas:
    "head head"
    "side main"
    "foot foot";
  gap: 16px;
}
header { grid-area: head; }
aside  { grid-area: side; }
main   { grid-area: main; }
footer { grid-area: foot; }
La maquetación de una página entera dibujada con nombres de áreas.

Columnas que se ajustan a la pantalla

Vale la pena memorizar un patrón de las guías de grid de MDN: grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)). minmax(150px, 1fr) dice que cada columna debe medir al menos 150 píxeles y puede crecer para repartirse el espacio, y auto-fill crea tantas columnas como quepan. El resultado es una galería que muestra dos columnas en un celular y cinco o seis en una pantalla ancha, otra vez sin media query. Igual que flexbox, grid puede colocar los elementos en un orden distinto al del HTML, y vale la misma advertencia: mantén iguales el orden de lectura y el orden visual.

contenedor gridEl padre con display: grid
pistaUna fila o una columna de la cuadrícula
frUna fracción del espacio libre
repeat(3, 1fr)Igual que 1fr 1fr 1fr
línea de la cuadrículaNumeradas desde 1; 3 columnas tienen las líneas de 1 a 4
span 2El elemento ocupa dos pistas
grid-template-areasDibuja la maquetación con nombres, una cadena por fila
minmax()Un tamaño de pista entre un mínimo y un máximo
  1. ¿Para maquetar en cuántas dimensiones está pensado grid?
  2. Una cuadrícula de 600px tiene las columnas 1fr 2fr y ningún gap. ¿Cuánto mide de ancho la segunda columna?
  3. Una cuadrícula de 700px tiene las columnas 200px 1fr y un gap de 20px. ¿Cuánto mide la columna de 1fr?
  4. ¿Cuántas líneas de columna (líneas verticales de la cuadrícula) tiene una cuadrícula de 4 columnas?
  5. ¿Qué hace grid-column: 1 / -1?
    • Estira el elemento a lo largo de todas las columnas
    • Oculta el elemento
    • Lo pone solo en la última columna
  6. ¿De qué es forma corta repeat(4, 1fr)?
    • 1fr 1fr 1fr 1fr
    • 4fr
    • 1fr 4fr
  7. En grid-template-areas, ¿qué representa una cadena entre comillas?
    • Una fila
    • Una columna
    • Un elemento
  8. ¿Qué propiedad asigna un elemento a un área con nombre?
  9. ¿Qué significa minmax(150px, 1fr) para una columna?
    • Al menos 150px, creciendo para repartirse el espacio libre
    • Exactamente 150px
    • Como máximo 150px
  10. ¿Qué conviene para la maquetación en dos dimensiones de una página con encabezado, barra lateral y pie?
    • grid
    • flexbox
    • float
Ideas clave
  • display: grid más grid-template-columns dibuja las pistas; fr reparte el espacio libre.
  • Los elementos llenan las celdas en orden; span y los números de línea los colocan.
  • grid-template-areas dibuja la maquetación de una página con nombres; repeat(auto-fill, minmax()) ajusta las columnas a la pantalla.
Fuentes de este curso (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Fecha de consulta: 2026-10-17