Les comparto mis apuntes sobre display flex del Curso Definitivo de HTML y CSS. :D
Clases:
-
Display flex
-
Flexbox layout
Display flex
Este display nos ayuda a tener un layout de forma más reponsive.
Si un padre tiene display flex sus hijos se van a comportar de forma distinta, similar como si los hijos tuvieran un display inline-block.
Siempre debemos tener un container principal para poder usar esta propiedad de flex.
flex-direction
Al colocar display flex por default tenemos un display direction en row, esto quiere decir como se van a colocar o acomodar los hijos.
Tenemos varios valores para esta propiedad
Row
Coloca a los hijos en forma de fila o hileras, uno al lado de otro.
Row-reverse
Coloca a los hijos en forma de fila o hileras, uno al lado del otro, pero en forma inversa. El último pasa a ser el primer elemento, todo se recoloca inversamente del lado original.
Column
Coloca a los hijos en forma de columna o verticalmente, como estaban originalmente antes del display flex como si todos tuvieran display block.
Column-reverse
Coloca a los hijos en forma de columna, pero de forma inversa. El último elemento pasa a ser el primero elemento, todo se recoloca inversamente del lado original.
flex-wrap
Esta propiedad no viene implícita y debemos colocar en caso de que la necesitemos.
Esta propiedad tiene los valores de
wrap
Hace crecer mi contenedor, basándose en el viewport, va aplicando u ordena a los elementos de forma inteligente.
A medida que mi pantalla es más pequeña el contenido se va a acomodando de arriba abajo.
wrap-reverse
Realiza lo mismo que el valor wrap, solo que este acomoda el contenido de abajo arriba.
justify-content
Nos permite alinear el contenido de forma horizontal, en el caso que tengamos el flex-direction que viene por default si lo tengamos en column este va a linar de forma vertical.
center
Permite alinear el contenido hacia el centro.
flex-end
Mueve todos los elementos se van hacia la derecha, en caso de que lo tengamos hacia la izquierda.
flex-start
Este valor viene por default.
Hace que el contenido se mueva hacia la izquierda.
space-around
Distribuye a los elementos en todo el width dejando un espacio es entre ellos.
Este espacio no es el mismo a lo largo de todo el contenedor, los elementos que se encuentran en los límites laterales del contenedor tienen un espacio menor a comparación del espacio entre los mismos elementos que es mayor.
space-evenly
Funciona igual que el space-around, pero con una diferencia.
Con este valor el espacio que hay entre todos los elementos y de los que se encuentran en los límites del contenedor son todos iguales.
flex-flow
Con esta propiedad podemos utilizar a flex-direction y a flex-wrap en la misma línea, separadas por un espacio.
flex-flow: valor[flex-direction] valor[flex-wrap];
align-items
Esta propiedad nos permite alinear los elementos de forma vertical, en caso de que tengamos un flex-direction column esta propiedad nos permitirá alinear los elementos de forma horizontal.
Al igual que justify-content tenemos varios valores que nos permiten manejar los elementos de un contenedor.
center
Alinea los elementos hacia el centro del contenedor.
flex-end
Coloca los elementos hacia la parte baja del contenedor.
flex-start
Coloca los elementos hacia arriba del contenedor.
stretch
Estira hacia el 100% del height, dependiendo el flex-direction, del contenedor a los elementos. Siempre y cuando estos elementos no tengan un height definido.
baseline
Reduce el height de los elementos hasta el contendido que tienen estos, tan grande o tan pequeño sea el contenido así será el height. Siempre y cuando estos elementos no tengan un height definido.
align-content
Acepta los mismos valores que align-items.
Esto puede ser confuso, pero align-content determina el espacio entre las líneas, mientras que align-items determina como los elementos en su conjunto están alineados dentro del contenedor. Cuando hay solo una línea, align-content no tiene efecto.
order
Si tenemos al contenedor con display: flex podemos utilizar una nueva propiedad que es order.
Order no se utiliza en el contenedor padre, sino que se lo coloca a los elementos o hijos. Al usar esta propiedad podemos cambiar el orden de los elementos, haciendo que el primer elemento sea el último, que el último sea el segundo, etc.
Los elementos que no tengan un order se moverán a la izquierda y a partir del último elemento, sin la propiedad order, se va a empezar a contar los elementos que si tengan esta propiedad.
flex-grow
Cuando nos sobra un espacio, de forma horizontal, y deseamos llenarlo con alguno de los elementos utilizamos esta propiedad.
Al colocarle de valor 1 esta empezará a crecer para ocupar el espacio en blanco que podemos tener y se lo aplica directamente a los hijos no al contenedor o padre.
flex-basis