Flexbox ejercicio

Activar Flexbox: display, dirección y gap

En CAT-24 usaste position para casos específicos: badges, tooltips, headers pegados. Ahora llega la herramienta para disponer múltiples elementos en fila o columna de forma mantenible: Flexbox.


display: flex — activar el contenedor

display: flex transforma un elemento en un contenedor flex. Sus hijos directos se convierten automáticamente en ítems flex sin que vos toques nada en ellos.

/* .nav es el contenedor flex */
.nav {
  display: flex;
}
/* Todos los <a> hijos directos de .nav son ahora ítems flex */

Al activar display: flex:

  • Los hijos se disponen en fila (de izquierda a derecha por defecto)
  • Dejan de ocupar el ancho completo — coexisten en la misma línea
  • Se estiran para llenar la altura del contenedor (align-items: stretch por defecto)

El contenedor sigue siendo un bloque por fuera — ocupa el ancho completo de su padre. display: flex cambia el comportamiento de sus hijos, no el suyo propio.


flex-direction — elegir el eje

flex-direction define en qué dirección fluyen los ítems:

.contenedor {
  display: flex;
  flex-direction: row;            /* → fila de izquierda a derecha (por defecto) */
  flex-direction: row-reverse;    /* ← fila de derecha a izquierda */
  flex-direction: column;         /* ↓ columna de arriba a abajo */
  flex-direction: column-reverse; /* ↑ columna de abajo a arriba */
}

Con row: los ítems se apilan en fila horizontal. Con column: se apilan verticalmente. Esta decisión define el eje principal del contenedor — y todo lo que viene después (justify-content, align-items) actúa relativo a ese eje.


gap — separación moderna entre ítems

gap crea espacio entre los ítems (nunca en los bordes del contenedor). Es la forma moderna de separar elementos en Flexbox.

.nav {
  display: flex;
  gap: 16px; /* 16px entre cada ítem, en cualquier dirección */
}

¿Por qué gap y no margin? Con márgenes entre ítems, el primer y último ítem quedan pegados al borde — hay que resetear esos márgenes con hacks. Con gap, el espacio solo existe entre ítems, nunca en los extremos.

También podés controlar los ejes por separado con row-gap (entre filas) y column-gap (entre columnas).


Tu turno: activá Flexbox en .nav-horizontal con dirección fila y 16px de gap; en .menu-vertical con dirección columna y 8px de gap. Observá el cambio en el preview y comprobá con el botón “Comprobar”.

Tu primera barra de navegación flex

Convertí el `<nav>` en un contenedor flex que disponga sus links en fila con 16 píxeles de separación entre ellos. Después, en un segundo contenedor vertical (`.menu-vertical`), disponé los mismos links en columna con 8 píxeles de separación. Para `.nav-horizontal`: - Activar Flexbox (`display: flex`) - Dirección en fila (`flex-direction: row`) - Separación de 16px entre ítems (`gap: 16px`) Para `.menu-vertical`: - Activar Flexbox (`display: flex`) - Dirección en columna (`flex-direction: column`) - Separación de 8px entre ítems (`gap: 8px`) **Nota:** que los links queden en fila o columna es un efecto de layout — observalo en el preview. El validador comprueba las propiedades CSS.

Preview

En la referencia