Cómo usar Grid y Flexbox en CSS
CSS

Cómo usar Grid y Flexbox en CSS

Publicado el 21 de octubre de 2024·6 min de lectura·Actualizado el 1 de junio de 2026

Por Ezequiel Orazi, desarrollador full-stack

Actualizado en junio de 2026. Sumé las técnicas de CSS que hoy ya tienen soporte total en navegadores y que cambiaron la forma de maquetar: gap también en Flexbox, las container queries, subgrid, aspect-ratio y grillas responsivas con auto-fit y minmax() sin necesidad de media queries. Los fundamentos de Grid y Flexbox que verás abajo siguen siendo la base.

Introducción

En el diseño web moderno, construir layouts flexibles y responsivos es esencial. Dos de las herramientas más poderosas en CSS para este propósito son CSS Grid y Flexbox. Cada uno tiene sus fortalezas y casos de uso, y en este artículo exploraremos cómo funcionan, en qué se diferencian, y cuándo deberías utilizar uno sobre el otro. Al final, tendrás una mejor comprensión de cómo emplear ambos para crear interfaces web adaptables y bien estructuradas.

¿Qué es Flexbox?

Flexbox, abreviatura de "Flexible Box Layout", es un sistema de layout de una dimensión que permite alinear y distribuir elementos en un contenedor, ya sea en dirección de fila o columna. Flexbox es ideal para construir layouts simples y para alinear elementos de manera dinámica.

Ejemplo de Flexbox

    
    .contenedor {
        display: flex;
        justify-content: space-around;
        align-items: center;
    }
    .item {
        flex: 1;
        padding: 10px;
        background-color: #ddd;
    }
    
    

¿Qué es CSS Grid?

CSS Grid es un sistema de layout bidimensional que permite crear diseños de cuadrícula en filas y columnas. A diferencia de Flexbox, Grid es especialmente útil para layouts complejos y estructurados donde se necesita una mayor precisión en la colocación de los elementos.

Ejemplo de CSS Grid

        
    .grid-contenedor {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 10px;
    }
    .grid-item {
        background-color: #ccc;
        padding: 20px;
    }
        
    

Comparación: Flexbox vs. Grid

Tanto Flexbox como Grid son útiles, pero se destacan en diferentes aspectos. Aquí hay una comparación rápida:

  • Flexbox: Mejor para layouts lineales de una dimensión, ya que facilita la alineación y el espaciado entre elementos en una dirección (horizontal o vertical).
  • Grid: Ideal para layouts bidimensionales complejos, ya que permite controlar filas y columnas de manera independiente.

Casos de Uso para Flexbox

Algunos escenarios donde Flexbox es especialmente útil:

  • Centraje de elementos en un contenedor.
  • Creación de menús de navegación horizontales.
  • Alineación de elementos en una sola fila o columna.

Casos de Uso para Grid

Algunos escenarios donde Grid es ideal:

  • Diseño de layouts de página completos.
  • Creación de galerías de imágenes en cuadrícula.
  • Distribución de elementos en filas y columnas complejas.

Ejemplo de Layout Combinado

En muchos casos, combinar Flexbox y Grid puede ser la solución más efectiva. Aquí un ejemplo de cómo puedes utilizar ambos para crear un layout flexible:

        
    .pagina {
        display: grid;
        grid-template-areas:
            "header header"
            "menu principal"
            "footer footer";
        grid-template-rows: auto 1fr auto;
        grid-template-columns: 200px 1fr;
    }
    .header {
        grid-area: header;
    }
    .menu {
        grid-area: menu;
        display: flex;
        flex-direction: column;
    }
    .principal {
        grid-area: principal;
    }
    .footer {
        grid-area: footer;
    }
        
    

CSS moderno que cambia el juego (2026)

Desde que se publicó esta guía, el CSS evolucionó mucho y varias técnicas que antes requerían trucos o JavaScript hoy son nativas y con soporte total:

  • Grillas responsivas sin media queries: con repeat(auto-fit, minmax(220px, 1fr)) la grilla acomoda sola la cantidad de columnas según el espacio disponible.
  • Container queries: permiten que un componente se adapte al ancho de su contenedor (no solo al de la pantalla), lo que hace que los componentes sean verdaderamente reutilizables.
  • Subgrid: deja que un elemento hijo herede las líneas de la grilla del padre, ideal para alinear tarjetas con distinto contenido.
  • aspect-ratio: reserva la proporción de imágenes y videos sin hacks de padding, evitando el "layout shift".
        
    /* Galería que se adapta sola, sin media queries */
    .galeria {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 1rem;
    }

    /* Un componente que responde al ancho de SU contenedor */
    .tarjeta-contenedor { container-type: inline-size; }
    @container (min-width: 400px) {
        .tarjeta { display: flex; gap: 1rem; }
    }
        
    

Conclusión

Grid y Flexbox son herramientas poderosas y complementarias en CSS. Utiliza Flexbox para layouts lineales y de una sola dimensión y CSS Grid para estructuras de cuadrícula más complejas. A medida que te familiarices con ambos, descubrirás que muchas veces puedes combinarlos para lograr layouts más versátiles y adaptables.

Citas y Fuentes

  • MDN Web Docs sobre Flexbox: "Flexbox es un modelo de layout diseñado para interfaces de usuario complejas y responsivas".
  • MDN Web Docs sobre Grid: "CSS Grid Layout es el primer método de layout de CSS diseñado explícitamente para construir interfaces de usuario complejas".

Seguí aprendiendo

¿Querés un sitio rápido y bien maquetado para tu negocio? Escribime y lo vemos.