Grid Playground
Interactivo
Cambia las propiedades del grid y observa la distribución. Incluye fr, repeat(), minmax(), auto-fill.
.grid { display: grid; }
Layout bidimensional. Controla filas y columnas al mismo tiempo.
Grid Playground
Interactivo
Cambia las propiedades del grid y observa la distribución. Incluye fr, repeat(), minmax(), auto-fill.
.grid { display: grid; }
grid-column · grid-row · span
Placement
Controlan exactamente qué celdas ocupa cada ítem con líneas de grid (1/3) o span N.
grid-template-areas
Layout
Layout visual con nombres de área como un "mapa ASCII" en el CSS.
grid-auto-flow · dense
Auto-placement
Controla cómo el algoritmo de auto-placement coloca los ítems. dense rellena huecos con ítems más pequeños.
grid-auto-flow: row /* default */
grid-auto-flow: column
grid-auto-flow: row dense /* rellena huecos */
grid-auto-flow: column dense
Líneas nombradas
Naming
Asigna nombres a las líneas del grid con corchetes []. Hace el código más legible y mantenible que usar números de línea.
/* Definición con nombres */
grid-template-columns:
[start] 200px
[content-start] 1fr
[content-end aside-start] 240px
[aside-end end];
/* Uso semántico */
.main { grid-column: content-start / content-end; }
.aside { grid-column: aside-start / aside-end; }
.full { grid-column: start / end; }
/* Múltiples nombres por línea */
grid-template-rows:
[header-top] 60px [header-bottom main-top] 1fr
[main-bottom footer-top] 50px [footer-bottom];
subgrid
Moderno
Un elemento hijo puede heredar las líneas del grid padre con subgrid. Permite alinear elementos nietos con el grid raíz.
.parent { display: grid; grid-template-columns: 1fr 1fr 1fr; }
.child {
grid-column: span 2;
display: grid;
grid-template-columns: subgrid; /* hereda 2 columnas */
}
grid-template-areas — Layout builder
Interactivo
El layout de página más expresivo de CSS: define zonas con nombres y asigna elementos. El "mapa ASCII" del CSS.
Selecciona un layout:
grid-auto-columns · grid-auto-rows
Implícito
Define el tamaño de filas/columnas creadas implícitamente (ítems que sobrepasan el grid explícito). minmax() es la combinación ideal.
/* Grid explícito: 3 columnas, 1 fila */
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: minmax(100px, auto);
/* rows extra siempre ≥100px pero crecen con el contenido */
}
/* Solo columnas implícitas */
.list {
display: grid;
grid-auto-flow: column;
grid-auto-columns: 200px; /* cada columna = 200px */
}