Generador de CSS Grid

Monta grid-template-columns, grid-template-rows y grid-template-areas visualmente: arrastra, pinta celdas y copia el CSS en vivo.

Todo ocurre localmente en tu navegador. Nada sale de tu dispositivo.

CSS generado

Cómo funciona

La pestaña de grid arma listas de pistas a partir de tus cuentas y tamaños: tres columnas 1fr se convierten en grid-template-columns: repeat(3, 1fr), el shorthand que se expande a una fracción del espacio libre por columna. auto ajusta la pista a su contenido, y un valor fijo en px reserva exactamente ese ancho — una receta común es una pista fija para la barra lateral más una pista fluida 1fr. Si quieres una pista que se estire con límites, edita a mano la salida hacia minmax(80px, 1fr); este constructor lo deja fuera del shorthand a propósito para que el CSS generado siga siendo legible.

La unidad fr
Un fr es una porción del espacio que queda tras restar pistas de tamaño fijo, huecos y padding — espacio libre, no un porcentaje. La distinción importa: con una barra lateral de 200px, gap de 16px y dos columnas 1fr, cada fr recibe (ancho − 216px) ÷ 2. Dos pistas a 2fr 1fr reparten el mismo resto 2:1, y un fr nunca desborda como pueden hacer los porcentajes cuando olvidas los huecos.
Reglas de nombre de grid-template-areas
Cada cadena entre comillas es una fila; cada token es una celda, y los tokens deben cuadrar en cantidad entre filas. Un área nombrada debe formar un rectángulo perfecto — una región en L es inválida y, sinceramente, el navegador descarta toda la declaración grid-template-areas cuando cualquier nombre rompe la regla, así que la línea de aviso de arriba no es decorativa. Las celdas vacías usan el punto. Una vez pintada, cada elemento puede agarrar un área por nombre en vez de contar líneas start/end.
Pistas implícitas vs explícitas
Tú declaras la cuadrícula explícita — las pistas de grid-template-columns y -rows. El contenido más allá (más elementos que celdas, o un grid de áreas con elementos sin asignar) crea pistas implícitas fuera de la plantilla, dimensionadas por grid-auto-columns/-rows, que valen auto por defecto. Por eso una demo que parece tener filas misteriosas extra normalmente solo desbordó la cuadrícula explícita.

Preguntas frecuentes

¿Grid o flexbox, cuál y cuándo?

Piensa en grid como layout-first y en flex como content-first. Si estás dibujando un esqueleto bidimensional —columnas y filas que deben alinearse en toda la página— usa grid, porque las pistas se alinean en ambos ejes. Si estás repartiendo una fila de botones, chips o enlaces cuyo tamaño sale de su contenido, flex es más ligero. Las páginas reales los mezclan: grid para la carcasa, flex dentro de cada celda.

¿Puedo usar subgrid con este diseño?

subgrid permite que un grid anidado tome prestadas las pistas del padre —útil para filas de tarjetas cuyas etiquetas internas deben alinear—. El soporte ya es realmente mayoritario: Firefox lo tuvo en la 71 (2019), Safari en el 16 (2022) y Chrome en el 117 (2023), así que en 2026 cuenta como ampliamente disponible. Este generador se queda en grid de nivel superior porque subgrid necesita anidamiento real para demostrarse con honestidad.

¿Y el Internet Explorer antiguo?

IE 10/11 implementó una especificación con prefijo (-ms-grid) totalmente distinta y con otro modelo de auto colocación, y esta herramienta no la emite. Tampoco se puede polyfillar con fidelidad. Si debes soportar ese IE, la vía pragmática son fallbacks con float o flexbox dentro de @supports (display: grid); si no, ignora IE.

¿Adónde van los elementos sin grid-area?

Conservan la auto colocación y ocupan las celdas que ningún área nombrada cubre —lo que, en una plantilla 4×4 totalmente pintada, significa que el navegador los añade como filas implícitas bajo el grid. Asigna un área a cada elemento visible o deja la plantilla sin pintar si quieres que la demo compacta parezca intencionada.

¿Se sube algo a un servidor?

No. El pintor, la matemática de pistas y la salida CSS corren en tu navegador como JavaScript y CSS puros. Tu diseño de grid nunca se guarda, envía ni descarga, y la página funciona sin red.