Flexbox Avanzado

Clase 20 de 32Curso de CSS

Resumen

Aprende a dominar Flexbox con ejemplos prácticos: configura el contenedor con display: flex, centra el contenido, controla el crecimiento con flex-grow y el atajo flex, y alinea elementos con align-self. Todo enfocado en un workflow claro y listo para aplicar en tus componentes en CSS.

¿Cómo configurar el contenedor y los items en Flexbox?

Para activar el modelo de Flexbox, el primer paso es convertir el contenedor en un contexto flexible con display: flex. Así se habilitan las propiedades que permiten distribuir y alinear los elementos internos de forma eficiente. También se aplica min-height: 100px para asegurar una altura mínima, y se usa margin-bottom y padding para separar y dar aire visual.

.container {
  display: flex;
  min-height: 100px;
  /* margin-bottom: ...; */
  /* padding: ...; */
  /* background: ... (gris utilizado previamente) */
}

¿Cómo se centra el texto dentro del item?

Cada elemento dentro del contenedor es un item. Para centrar su contenido horizontalmente se usa text-align: center. Además, se aplica padding para generar espacio interno, margin para separación entre tarjetas, un background azul y color: white para contraste.

.item {
  text-align: center;
  padding: 20px;
  margin: 5px;
  background: #3498db;
  color: white;
}
  • Activar contexto flexible con display: flex.
  • Asegurar altura mínima con min-height: 100px.
  • Separar bloques con margin-bottom y dar aire con padding.
  • Centrar texto con text-align: center.

¿Cómo hacer que los elementos crezcan con flex-grow y flex?

Cuando hay espacio libre en el contenedor, flex-grow permite que los items crezcan para ocuparlo. Así controlas la proporción de crecimiento entre elementos vecinos de forma simple.

¿Qué hace flex-grow 0, 1 y 2?

  • 0: no crece para ocupar espacio extra.
  • 1: crece proporcionalmente al resto que también tiene 1.
  • 2: crece el doble respecto a los que tienen 1.
.grow { /* aplicado al elemento con clase correspondiente */
  flex-grow: 1;
}

Ejemplo de uso: si un item tiene .grow con flex-grow: 1, ocupará espacio libre; si otro tiene valor 2, crecerá el doble que el de 1.

¿Cuándo usar el shorthand flex?

El atajo flex agrupa varias configuraciones en una sola línea. En el ejemplo, flex: 1 se comporta como el crecimiento proporcional visto con flex-grow.

.flex.uno { /* elemento con clases: flex y uno */
  flex: 1;
}

.flex.dos { /* elemento con clases: flex y dos */
  flex: 2;
}
  • flex: 1 hace que el item crezca para ocupar el espacio disponible.
  • flex: 2 crece el doble que los que tienen flex: 1.
  • Útil cuando quieres definir crecimiento de manera breve y consistente.

¿Cómo alinear contenido con align-self?

Para alinear items de forma independiente, align-self permite posicionarlos en el eje cruzado. Con flex-start se sitúan arriba y con flex-end abajo. El alto visible se adapta al contenido y al padding aplicado.

.self.start { /* elemento con clases: self y start */
  align-self: flex-start;
}

.self.end { /* elemento con clases: self y end */
  align-self: flex-end;
}
  • align-self: flex-start: alinea el item en la parte superior.
  • align-self: flex-end: alinea el item en la parte inferior.
  • El espacio visible depende del contenido y del padding del item.

¿Quieres ver más patrones con Flexbox o tienes un caso específico? Cuéntalo en los comentarios y construyamos la mejor solución paso a paso.