DevPath · Aprende a programar ESPTEN

Flexbox a fondo

Patrones reales: centrado, navbar y reparto

Patrón 1: el centrado perfecto

El santo grial histórico de CSS —centrar algo horizontal y verticalmente— era para tirarse de los pelos. Con flexbox es trivial: centras en ambos ejes a la vez con dos líneas.

.centro {
  display: flex;
  justify-content: center;  /* eje principal */
  align-items: center;      /* eje cruzado */
  min-height: 100vh;        /* el contenedor necesita alto para centrar en vertical */
}

El detalle clave: para centrar en vertical, el contenedor debe tener altura. Sin min-height (o un alto fijo) no hay espacio sobrante en el eje cruzado y parecerá que align-items "no hace nada".

Patrón 2: la barra de navegación

El layout más repetido de la web: logo a un lado, enlaces al otro. Se resuelve con justify-content: space-between, que empuja el primer y el último hijo a los extremos:

.nav {
  display: flex;
  justify-content: space-between; /* logo a la izquierda, menú a la derecha */
  align-items: center;            /* todo a la misma altura */
}
.nav ul {
  display: flex;   /* los enlaces, a su vez, en fila */
  gap: 24px;
  list-style: none;
}
<nav class="nav">
  <span class="logo">DevPath</span>
  <ul>
    <li><a href="#">Cursos</a></li>
    <li><a href="#">Precios</a></li>
    <li><a href="#">Entrar</a></li>
  </ul>
</nav>

Una variante muy útil: si quieres el logo a un lado y todo lo demás al otro sin contar con space-between, da margin-left: auto al primer elemento del grupo derecho. Los márgenes automáticos absorben todo el espacio sobrante del eje principal, un truco potentísimo de flexbox.

Patrón 3: repartir el espacio (holy grail)

Una cabecera fija, un contenido que ocupa "lo que quede" y un pie fijo, en columna:

.layout {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
.layout main {
  flex: 1;   /* el contenido absorbe todo el alto sobrante */
}

La cabecera y el pie conservan su tamaño natural; flex: 1 en el main hace que el pie quede siempre abajo, aunque haya poco contenido. El mismo patrón en horizontal te da una sidebar fija con contenido elástico:

.app { display: flex; }
.app .sidebar { flex: 0 0 240px; } /* ancho fijo */
.app .contenido { flex: 1; }       /* el resto */

Con estos tres patrones —centrar, space-between y flex: 1— cubres el 90 % de lo que necesitarás en un proyecto real. Flexbox brilla repartiendo en una dirección: una fila, una columna. Cuando necesites mandar en filas y columnas a la vez (una rejilla de verdad), el relevo lo toma grid, y ahí vamos después.

Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Los items: grow, shrink, basis, self y orderVer el módulo →