Saltar al contenido principal
Leyendo: Flexbox parte 2
Apuntes de clase

Clase 08 · Flexbox parte 2

Segunda parte de Flexbox en Edición Web I: repasamos la estructura padre-hijos y vemos flex-direction, el eje principal y el secundario, align-items, align-content, el tamaño flexible y dos ejemplos completos de tarjetas (en fila y en columna). El código de cada ejemplo es el mismo que se mostró en clase.

Descargar PDF

01 · Repasando flex

Repasando Flex: estructura

Las propiedades flex se ponen en el padre; los hijos son sus elementos directos.

index.html
<div>
  <div>hijo 1</div>
  <div>hijo 2</div>
</div>
Padre e hijos
Hijos ↓
hijo 1
hijo 2
↑ Padre (aquí va el código flex)
01 · Repasando flex

display: flex + justify-content

HTML
<div class="padre">
  <div>hijo 1</div>
  <div>hijo 2</div>
</div>
CSS
.padre{
  display:flex;
  justify-content:flex-start;
  padding:16px;
  border:1px solid black;
  height:750px;
}
Resultado (altura reducida)
hijo 1
hijo 2
01 · Repasando flex

Prueba las diferentes opciones de justify-content

Cambia el valor de justify-content en el .padre y observa cómo se colocan los dos hijos:

justify-content
justify-content: flex-start;
justify-content: space-between;
justify-content: center;
justify-content: space-around;
justify-content: flex-end;

En la diapositiva aparece escrito between-space, pero el valor correcto en CSS es space-between.

02 · flex-direction

Flex-direction

Especificamos si queremos que los elementos se distribuyan en horizontal o en vertical.

Horizontal: se distribuyen en filas
display:flex;
flex-direction:row;
Vertical: se distribuyen en columnas
display:flex;
flex-direction:column;

El valor por defecto, si no ponemos ningún flex-direction, es row.

02 · flex-direction

Flex-direction: invertir el orden

Podemos invertir el orden de filas y columnas.

Filas
display:flex;
flex-direction: row-reverse;
Columnas
display:flex;
flex-direction: column-reverse;
Los cuatro valores (hijos 1, 2 y 3)
123
row
123
row-reverse
123
column
123
column-reverse
02 · flex-direction

Flex-direction: esquema

row (por defecto) frente a column
display: flex;
flex-direction: row;
Valor por defecto si no ponemos nada
display: flex;
flex-direction: column;
03 · Eje principal y secundario

Definir el eje principal y el eje secundario

Nuestro eje principal podrá ser row o column como nosotros queramos, por lo que el eje secundario pasará a ser el contrario. El eje principal va a marcar la dirección en que distribuimos nuestros elementos.

Eje principal column
↔ Eje secundario
↕ Eje principal (column)
  • Eje principal column: vemos que los elementos están distribuidos de forma vertical.
  • Eje secundario row: horizontalmente están alineados al centro.
03 · Eje principal y secundario

Alinear el eje principal y el eje secundario

Qué alineamosPropiedadValores
Eje principal (independientemente si es row o column)justify-contentflex-start | center | flex-end | space-between | space-evenly | space-around
Eje secundario (independientemente si es row o column)align-itemsflex-start | center | flex-end
Eje secundario, cuando haya más de una líneaalign-contentflex-start | center | flex-end
03 · Eje principal y secundario

Ejemplos eje principal y eje secundario

Cinco combinaciones
flex-direction: row;
justify-content: center;
align-items: flex-start;
flex-direction: row;
justify-content: center;
align-items: center;
flex-direction: column;
justify-content: center;
align-items: center;
flex-direction: row;
justify-content: space-between;
align-items: center;
flex-direction: column;
justify-content: flex-end;
align-items: flex-end;
04 · Tabla resumen

Tabla resumen

ConceptoCódigoNotas
1. Displaydisplay: flex;
2. Direcciónflex-direction: row;
flex-direction: column;
flex-direction: row-reverse;
flex-direction: column-reverse;
Si no definimos dirección, por defecto se aplica row (fila). Los -reverse invierten el orden de los elementos de dentro del contenedor.
3. Alinear eje principaljustify-content: flex-start / flex-end / center / space-between…El eje principal es el que definimos en el parámetro flex-direction.
4. Alinear eje secundarioalign-items: flex-start / flex-end / center
align-content: flex-start / flex-end / center
Si el principal es row, el secundario será column y a la inversa. align-items se usa cuando solo hay una línea de elementos que alinear; align-content cuando hay varias líneas.
5. Flujo (wrap)flex-wrap: wrap / no-wrap;
flex-wrap: wrap-reverse;
Los elementos de dentro del contenedor fluyen en varias filas o columnas o se concentran en una sola. wrap-reverse invierte el orden.
6. Espacio entre elementosgap: 8px;
column-gap: 8px;
row-gap: 8px;
Espaciado independiente de filas y columnas.
7. Tamaño (elemento hijo)flex-grow: 2;
flex: 2;
Tamaño flexible. Se aplica a los elementos hijo.
Tabla de la diapositiva
Tabla resumen de las propiedades flex: display, dirección, alinear eje principal, alinear eje secundario, flujo wrap, espacio entre elementos y tamaño.
05 · Tamaño flexible

Ejemplo Tamaño flexible

Con flex en los hijos repartimos el ancho de forma proporcional: tres hijos con flex: 1 ocupan lo mismo; con flex: 1 y flex: 4, el segundo es cuatro veces más ancho.

style.css
.padre{
  display:flex;
}

.hijo{
  flex:1;
}

.hijo-grande{
  flex:4;
}
Resultado
flex:1
flex:1
flex:1
flex:1
flex:4
06 · Ejemplos de card

Ejemplo Card row

Una tarjeta en fila: el padre es un contenedor flex con dos hijos, el avatar (hijo 1) y el texto con los botones (hijo 2).

Esquema de la diapositiva · CSS del padre
.card {               /* Padre */
  display:flex;
  flex-direction:row;
  gap:8px;
}
Resultado

Persona curiosa

Una persona curiosa suele caracterizarse por ese deseo constante de aprender, explorar y comprender el mundo que la rodea. Hace preguntas con frecuencia, busca respuestas, muestra interés por lo conocido pero también le fascina aquello que no conoce.

Button 01 Button 02
Esquema de la diapositiva: Padre, Hijo 1 e Hijo 2
Tarjeta con avatar y texto marcada con el padre (display flex, flex-direction row, gap 8px) y los hijos 1 y 2.

En la diapositiva la propiedad aparece escrita dispaly; la correcta es display.

Diseño original
Tarjeta horizontal con avatar de una persona a la izquierda, el título «Persona curiosa», un párrafo y dos botones sobre fondo verde menta.
06 · Ejemplos de card

Ejemplo Card column

Tres tarjetas en fila dentro de un padre, y cada tarjeta a su vez es un contenedor flex en columna con cuatro hijos: imagen, título, texto y botón.

Esquema de la diapositiva · padre de las tarjetas
.contenedor {        /* Padre */
  display:flex;
  flex-direction:row;
  justify-content:center;
  gap:8px;
}
Esquema de la diapositiva · cada tarjeta
.card {               /* Padre de los 4 hijos */
  display:flex;
  flex-direction:column;
  justify-content:space-around;
  align-items: center;
}
Resultado

Persona Curiosa

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh.

      

Persona Curiosa

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh.

      

Persona Curiosa

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh.

      
Esquemas de la diapositiva
Tres tarjetas dentro de un padre con display flex, flex-direction row, justify-content center y gap 8px; hijos 1, 2 y 3. Una tarjeta con sus cuatro hijos (imagen, título, texto y botón) y su padre: display flex, flex-direction column, justify-content space-around y align-items center.
Diseño original
Tres tarjetas verticales con avatar, título «Persona Curiosa», texto y botón sobre fondo verde menta.