CSS Grid cambió la forma de construir páginas desde 2017: más control, layouts bidimensionales y resultados consistentes. Con Tailwind, activar grid, columnas, gap y spans es directo y escalable. Aquí verás cómo pasar de Flexbox a Grid, crear una galería responsive, calcular espaciados y hacer que elementos ocupen varias columnas en un Playground real.
¿Qué aporta CSS Grid frente a Flexbox?
CSS Grid nació como propuesta en 2011, maduró en 2015 y se incorporó a navegadores en 2017. La diferencia clave: Flexbox es unidimensional (eje horizontal o vertical) y Grid es bidimensional (filas y columnas). Esto da mucha más flexibilidad para crear estructuras complejas sin hacks.
Grid organiza por filas y columnas a la vez.
Flexbox se enfoca en una sola dimensión.
Grid facilita componer áreas como header, menú, sección principal y footer.
¿Cómo definir columnas, espaciado y una galería con Tailwind?
Activar Grid con utilidades de Tailwind simplifica la composición. Verás cómo grid, grid-cols y gap distribuyen elementos de forma uniforme y responsive.
Grid permite que un elemento ocupe varias columnas con col-span. Así se arman combinaciones como héroes anchos, tarjetas destacadas o bloques que atraviesan filas según necesidad.
col-span-2 hace que el primer bloque ocupe dos columnas de cuatro.
Los siguientes se acomodan en el espacio restante de la fila.
col-span-3 y col-span-4 expanden bloques según la composición.
¿Cómo usar la escala de espaciado y medidas?
La escala de Tailwind se basa en incrementos de 4. Aquí un dato clave: gap-4 = 1rem = 16 píxeles. Con esto puedes hacer cálculos rápidos y consistentes.
Usa gap-4 como mínima proporción uniforme.
Ajusta márgenes como mt-8 para separar secciones.
Piensa en rem y píxeles al planear el grid.
¿Cómo dinamizar el layout con JavaScript?
Puedes aplicar o no utilidades como col-span de forma dinámica para que, por ejemplo, una imagen destaque según su tamaño o posición. Esto hace el renderizado del layout más flexible sin tocar el CSS base.
¿Quieres que haga un ejemplo dinámico con JavaScript o que armemos un layout con header, hero, sidebar y footer usando Grid? Cuéntame en los comentarios qué necesitas construir y en qué parte te gustaría profundizar.
Para quienes les interese conocer un poco más del funcionamiento de CSS Grid, cuando se utiliza la clase col-span-2 de Tailwind, realmente se está empleando la propiedad grid-column: span 2, la cual a su vez está abreviando otras 2 propiedades llamadas grid-column-start y grid-column-end.
Este valor span 2 es una de las formas en las que se puede asignar valor a la propiedad grid-column en CSS puro, e indica que Grid tomará el grid item involucrado y lo ubicará en la primera columna disponible en la que sea posible que dicho elemento abarque las 2 columnas especificadas.
En el playground de Tailwind esta equivalencia se expresa utilizando de forma redundante el valor span y por eso se ve como grid-column: span 2 / span 2, pero esto lo hace para asegurar que el grid item involucrado ocupe las 2 columnas especificadas y mantener la coherencia con otras clases que emplean el mismo formato, aunque el navegador interpreta grid-column: span 2.
Les sugiero el siguiente vídeo para conocer más acerca del funcionamiento de CSS Grid:
Ya por fin le entendí a Grid. 🤯
Aquí explican muy bien cuando usar Flex y Cuando Grid, incluso la mezcla de ambos
aquí del mismo pero la explicación de solo grid
🚀🚀Elaboré los siguientes retos.
El primero basado en flexbox y las cards basadas en GRID:
Para los que tenemos algo de experiencia con grillas, sabemos que una de las cosas más complicadas era usar: grid areas en el contenedor. y luego grid-template-areas y asignar cada nombre a cada elemento de la grilla
Usando CSS sería
<div class="grid-container">
<div class="header">Header</div>
<div class="nav">Nav</div>
<div class="main">Main</div>
<div class="aside">Aside</div>
<div class="footer">Footer</div>
</div>
Y para armar la grilla
.grid-container {
display: grid;
grid-template-areas:
"header header"
"nav main"
"aside main"
"footer footer";
grid-template-columns: 1fr 2fr;
grid-template-rows: auto 1fr 1fr auto;
gap: 10px;
height: 100vh;
padding: 10px;
}
.header {
grid-area: header;
background: #4CAF50;
color: white;
text-align: center;
padding: 10px;
}
.nav {
grid-area: nav;
background: #2196F3;
color: white;
padding: 10px;
}
.main {
grid-area: main;
background: #f1f1f1;
padding: 10px;
}
.aside {
grid-area: aside;
background: #FF9800;
color: white;
padding: 10px;
}
.footer {
grid-area: footer;
background: #333;
color: white;
text-align: center;
padding: 10px;
}
Pero con tailwind esto se hace mucho más facil usando la clase de utilidad order
.grid-container{display: grid;grid-template-columns:repeat(2,1fr);/* Dos columnas de igual tamaño */gap:10px;/* Espacio entre elementos */}.grid-item{background-color:lightblue;padding:20px;text-align: center;}
Este código crea un contenedor de grid con dos columnas y un espacio entre los elementos, aplicando un estilo básico. Puedes personalizarlo según tus necesidades.
está muy bueno, no conocía esa funcionalidad de grid