Grid Básico
Clase 21 de 32 • Curso de CSS
Resumen
Con CSS Grid puedes posicionar contenido en dos ejes a la vez de forma clara y escalable. Activa el modelo con display: grid, define columnas con grid-template-columns usando fracciones fr, automatiza con la función repeat() y controla el espacio interno con gap. Verás un grid 2×2, cómo repartir 1fr 2fr 1fr, y cuándo preferir gap en lugar de margin.
¿Qué diferencia a grid de flexbox?
CSS Grid organiza elementos en columnas y filas simultáneamente, mientras que flexbox trabaja en un eje a la vez (horizontal o vertical). La clave es el contenedor padre: al aplicar display: grid, se activa el modelo de layout y los hijos se distribuyen en celdas.
- Contenedor padre con display: grid activado.
- Ejes doble: columnas y filas al mismo tiempo.
- Control directo de proporciones con la unidad fr.
Idea fuerza: si buscas estructuras bidimensionales (p. ej., 2 columnas por varias filas), usa grid; si solo necesitas un eje, usa flexbox.
¿Cómo crear columnas con grid-template-columns y fracciones fr?
La unidad fr es exclusiva de Grid: representa una fracción del espacio disponible del contenedor. Con grid-template-columns defines cuántas columnas y qué proporción ocupa cada una. Por ejemplo, 1fr 1fr
reparte el espacio en dos partes iguales; al añadir una tercera 1fr
, tendrás tres columnas. Con cuatro elementos, se forma un grid dos por dos automáticamente.
¿Cómo definir un grid dos por dos?
.grid.simple {
display: grid;
grid-template-columns: 1fr 1fr;
}
.item {
background: #3498db; /* azul del ejemplo */
color: white;
padding: 20px;
text-align: center;
margin: 3px; /* visible, aunque con grid conviene usar gap */
}
1fr 1fr
: dos columnas del mismo tamaño.- Cuatro
.item
generan dos filas, formando el 2×2.
¿Cómo ajustar proporciones con 1fr, 2fr y 1fr?
.grid.fraccion {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
- La columna central ocupa el doble que las laterales.
- Si cambias
2fr
por1fr
, tendrás tres columnas iguales.
¿Cómo manejar el espacio con gap y la función repeat?
Para evitar repetir valores, la función repeat() simplifica la definición de columnas: repeat(3, 1fr)
crea tres columnas iguales. Además, gap establece el espacio entre columnas y filas del grid sin modificar el tamaño interior de los elementos, a diferencia de margin.
.grid.gap {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px; /* espacio entre columnas y filas */
}
repeat(3, 1fr)
: código más limpio y fácil de mantener.gap: 20px
: separación clara entre celdas del grid.- Recomendación práctica: si ya usas grid, preferir gap sobre margin para separar elementos.
¿Te quedó alguna duda sobre grid-template-columns, fracciones fr o gap? Comparte en comentarios qué layout quieres construir y lo revisamos juntos.