Appearance
Flexbox
Flexbox es un modelo de diseño que nos permite crear layouts flexibles. Es decir, layouts que se adaptan a diferentes tamaños de pantalla y dispositivos.
Contenedor flex
Para crear un contenedor flex, debemos usar la propiedad display
:
css
.contenedor {
display: flex;
}
.contenedor {
display: flex;
}
Una vez tenemos un contenedor flex, los elementos hijos del contenedor se convierten en elementos flex. Esto significa que podemos usar las propiedades de flexbox para modificar su comportamiento.
flex-direction
La propiedad flex-direction
nos permite modificar la dirección en la que se muestran los elementos flex. Por defecto, los elementos flex se muestran en fila:
css
.contenedor {
display: flex;
flex-direction: row;
}
.contenedor {
display: flex;
flex-direction: row;
}
Podemos usar flex-direction
para mostrar los elementos en columna:
css
.contenedor {
display: flex;
flex-direction: column;
}
.contenedor {
display: flex;
flex-direction: column;
}
También podemos usar flex-direction
para mostrar los elementos en fila, pero en orden inverso:
css
.contenedor {
display: flex;
flex-direction: row-reverse;
}
.contenedor {
display: flex;
flex-direction: row-reverse;
}
O en columna, pero en orden inverso:
css
.contenedor {
display: flex;
flex-direction: column-reverse;
}
.contenedor {
display: flex;
flex-direction: column-reverse;
}
Cuando tenemos flex-direction
configurado como row
, el eje principal es el horizontal, y el eje secundario es el vertical. Cuando tenemos flex-direction
configurado como column
, el eje principal es el vertical, y el eje secundario es el horizontal. Esto es importante tenerlo en cuenta a la hora de usar justify-content
y align-items
.
flex-wrap
La propiedad flex-wrap
nos permite modificar el comportamiento de los elementos flex cuando no caben en el contenedor. Por defecto, los elementos flex se muestran en una sola línea:
css
.contenedor {
display: flex;
flex-wrap: nowrap;
}
.contenedor {
display: flex;
flex-wrap: nowrap;
}
Podemos usar flex-wrap
para mostrar los elementos en varias líneas:
css
.contenedor {
display: flex;
flex-wrap: wrap;
}
.contenedor {
display: flex;
flex-wrap: wrap;
}
flex-flow
La propiedad flex-flow
nos permite modificar flex-direction
y flex-wrap
al mismo tiempo:
css
.contenedor {
display: flex;
flex-flow: row wrap;
}
.contenedor {
display: flex;
flex-flow: row wrap;
}
justify-content
La propiedad justify-content
nos permite modificar la alineación de los elementos flex en el eje principal
. Por defecto, los elementos flex se muestran alineados a la izquierda, pero podemos usar los siguientes valores para modificarlo:
flex-start
: Los elementos se muestran alineados a la izquierda.flex-end
: Los elementos se muestran alineados a la derecha.center
: Los elementos se muestran centrados.space-between
: Los elementos se muestran separados con el mismo espacio entre ellos.space-around
: Los elementos se muestran separados con el mismo espacio alrededor de ellos.space-evenly
: Los elementos se muestran separados con el mismo espacio entre ellos y alrededor de ellos.
align-items
La propiedad align-items
nos permite modificar la alineación de los elementos flex en el eje secundario
. Por defecto, los elementos flex se muestran alineados arriba, pero podemos usar los siguientes valores para modificarlo:
flex-start
: Los elementos se muestran alineados arriba.flex-end
: Los elementos se muestran alineados abajo.center
: Los elementos se muestran centrados.stretch
: Los elementos se muestran estirados para ocupar todo el espacio disponible.baseline
: Los elementos se muestran alineados por su línea base.first baseline
: Los elementos se muestran alineados por la línea base del primer elemento.last baseline
: Los elementos se muestran alineados por la línea base del último elemento.safe center
: Los elementos se muestran centrados, pero teniendo en cuenta el padding del contenedor.unsafe center
: Los elementos se muestran centrados, sin tener en cuenta el padding del contenedor.
flex-grow
La propiedad flex-grow
nos permite modificar la proporción en la que los elementos flex crecen. Por defecto, todos los elementos flex tienen el mismo tamaño, pero podemos usar flex-grow
para modificarlo:
css
.elemento {
flex-grow: 1;
}
.elemento {
flex-grow: 1;
}