¿Puedo anidar contenedores Flexbox dentro de elementos Grid y viceversa?

¡Sí! Aprende cómo anidar contenedores Flexbox dentro de ítems Grid y viceversa para aprovechar las fortalezas de ambos sistemas de layout en CSS.

LucusHost, el mejor hosting

20% DESCUENTO ALOJAMIENTO WEB

Puedes anidar contenedores Flexbox dentro de elementos que son ítems de una cuadrícula Grid, y también puedes anidar contenedores Grid dentro de elementos que son elementos de un layout Flexbox. Esta capacidad de anidamiento es, de hecho, una de las razones fundamentales por las que la combinación de CSS Grid y Flexbox es tan potente y versátil para crear diseños web complejos.

No hay restricciones que impidan que un elemento sea al mismo tiempo un elemento de un layout (Grid o Flexbox) y un contenedor de otro layout para sus propios hijos.

1. Anidar Flexbox dentro de un elemento de Grid (Caso de uso muy común):

Esta es la combinación más frecuente. Utilizas CSS Grid para definir la estructura principal de tu página o de una sección grande (el macro-layout). Luego, cualquiera de los elementos que coloques en esa cuadrícula (los elementos de Grid) puede convertirse en un contenedor Flexbox simplemente aplicándole display: flex; o display: inline-flex;. Esto te permite usar las capacidades de alineación y distribución de Flexbox para organizar el contenido dentro de esa celda o área específica de la cuadrícula.

.contenedor-grid-principal {
  display: grid;
  grid-template-columns: 1fr 2fr; /* Ejemplo de estructura Grid */
  gap: 20px;
}

.item-de-grid {
  /* Este elemento es un ítem de la cuadrícula Grid de arriba */
  background-color: lightblue;
  padding: 15px;

  /* Y ahora lo convertimos en un contenedor Flexbox para sus propios hijos */
  display: flex;
  flex-direction: column;
  justify-content: space-between; /* Alinea los hijos dentro de este ítem */
}

.item-de-grid > div {
  background-color: lightcoral;
  margin-bottom: 5px;
}Lenguaje del código: PHP (php)

2. Anidar Grid dentro de un elemento de Flexbox:

De manera similar, un elemento que es un elemento flexible (hijo de un contenedor con display: flex;) puede, a su vez, ser definido como un contenedor Grid (display: grid;). Esto podría ser útil si tienes un componente que se alinea o distribuye usando Flexbox, pero internamente ese componente se beneficia de una estructura de cuadrícula bidimensional para sus propios contenidos.

.contenedor-flex-principal {
  display: flex;
  gap: 20px;
}

.item-flexible {
  /* Este elemento es un ítem flexible */
  flex: 1; /* Ocupa espacio flexiblemente */
  background-color: lightgreen;
  padding: 15px;

  /* Y ahora lo convertimos en un contenedor Grid para sus propios hijos */
  display: grid;
  grid-template-columns: 1fr 1fr; /* Estructura interna de dos columnas */
  gap: 10px;
}Lenguaje del código: PHP (php)

Esta capacidad de anidar te permite elegir la herramienta de layout más adecuada para cada nivel de tu diseño, desde la estructura global de la página hasta los componentes más pequeños y sus partes internas, aprovechando las fortalezas de cada sistema.

¿Tienes alguna duda o pregunta?Envía el formulario y procuraré darle respuesta
Formulario de pregunta
Responsable » Jose Ramón Bernabeu Guillem. Finalidad » Ponernos en contacto. Legitimación » Tu consentimiento al marcar la casilla verificación. Destinatarios » Los datos que proporciones estarán ubicados en los servidores de LucusHost, proveedor de hosting de este sitio. Derechos » por supuesto tendrás derecho, entre otros, a acceder, rectificar, limitar y suprimir tus datos.
Si creees que esto puede ser de utilidad a alguien más, pues... compártelo que es gratis 🙂
Sitio alojado en un servidor verde según The Green Web Foundation

20% DESCUENTO ALOJAMIENTO WEB

LucusHost, el mejor hosting

Aviso legal | Condiciones de contratación | Política de privacidad | Política de cookies
© 2017-2025 · Jose R. Bernabeu ·
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram