CSS Grid Layout (o simplemente "Grid") es un sistema de diseño bidimensional para la web. A diferencia de Flexbox, que se centra en una sola dimensión (ya sea una fila o una columna), Grid permite controlar tanto las filas como las columnas, lo que lo hace ideal para crear diseños complejos y responsivos.
display: grid;
o display: inline-grid;
. Esto convierte a sus hijos directos en *items grid*.Estas propiedades se aplican al *contenedor* grid (el elemento padre):
display: grid | inline-grid;
: Activa Grid Layout. grid
crea un contenedor grid a nivel de bloque, mientras que inline-grid
crea un contenedor grid a nivel de línea.grid-template-columns
: Define las columnas de la cuadrícula, especificando el tamaño de cada pista de columna.grid-template-rows
: Define las filas de la cuadrícula, especificando el tamaño de cada pista de fila.Ejemplos de grid-template-columns
y grid-template-rows
:
.grid-template-example1 {
grid-template-columns: 1fr 1fr 1fr; /* Tres columnas iguales */
grid-template-rows: 100px 150px; /* Dos filas, una de 100px y otra de 150px */
}
.grid-template-example2 {
grid-template-columns: repeat(4, 1fr); /* Cuatro columnas iguales */
grid-template-rows: auto auto auto; /* Tres filas de altura automática */
}
.grid-template-example3 {
grid-template-columns: 200px 1fr 2fr; /* Columna fija y dos flexibles */
grid-template-rows: min-content max-content; /* Filas según contenido */
}
.grid-template-example4 {
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); /* Columnas responsivas */
gap: 10px;
}
Unidades y Funciones para grid-template-columns
y grid-template-rows
:
fr
(fracción): Representa una fracción del espacio disponible en el contenedor grid. Es una unidad *flexible*.
.grid-fr-example {
grid-template-columns: 1fr 2fr 1fr;
gap: 15px;
}
repeat()
: Permite repetir un patrón de pistas varias veces.
.grid-repeat-example {
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(2, 50px);
}
auto-fit
y auto-fill
: Se usan para crear un número flexible de pistas.
Ejemplo de auto-fit
:
.grid-repeat-auto-fit {
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
gap: 10px;
}