FLEXBOX
Técnica de CSS que permite crear diseños flexibles y adaptables a diferentes tamaños de pantalla y dispositivos, con esta técnica es posible controlar el tamaño, la posición y el orden de los elementos que se encuentran en un contenedor, además distribuirlos de manera flexible. Flexbox se basa en el concepto de “Flex Container” (Contenedor flexible) y “Flex item” (Elemento flexible).
Ejes de flexbox
Flexbox trabaja con 2 ejes, el eje principal identificado como (flex-direction) y un eje perpendicular (row o row-reverse) a éste. Al comenzar a implementar flexbox lo primero es contar con un contenedor flexible, tal como se muestra a continuación:
.flex-container{ display: flex; }
![](/web/image/747-758902c5/1.png?access_token=12364cc6-ad03-4d2f-8f96-08ae0a5e5dbe)
El contenedor identificado con la clase flex-container se vuelve flexible al establecer el atributo "display" con la propiedad "flex".
![](/web/image/713-6ad100a3/2.png?access_token=bc4c2e5e-203a-43a1-98bf-29d5623d6275)
El contenedor identificado con la clase flex-container se vuelve flexible al establecer el atributo “display” la propiedad “flex”.
Atributos de un contenedor flexible (flex).
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
1. flex-direction:
Define en qué dirección el contenedor muestra los elementos, a este atributo se le pueden aplicar las siguientes propiedades.
- column:
Apila los elementos verticalmente de arriba a abajo.
.flex-container{ display: flex; flex-direction: column;}
![](/web/image/748-bb2b5de0/3.png?access_token=56c23f46-0111-408a-986d-9f0bcb897041)
- column-reverse:
Apila los elementos verticalmente de abajo hacia arriba.
.flex-container{ display: flex; flex-direction: column-reverse;
}
![](/web/image/749-3b25d1d5/4.png?access_token=01ec3451-ebf8-4123-ba99-702e8c5cc438)
- row:
Apila los elementos horizontalmente de izquierda a derecha.
.flex-container{ display: flex; flex-direction: row;
}
![](/web/image/750-05dc4585/5.png?access_token=2806ccfe-60a8-4991-bf02-df4215d11e34)
- row-reverse:
Apila los elementos horizontalmente de derecha a izquierda.
.flex-container{ display: flex; flex-direction: row-reverse; }
![](/web/image/751-eb0764a0/6.png?access_token=53ef5030-a3c3-4441-800b-1b91227b0026)
![](/web/image/752-e80dc9a4/7.png?access_token=93a22ab0-4543-4998-89d1-f61638ab79d0)
- wrap-reverse:
los elementos del contenedor se ajustarán en orden inverso.
.flex-container{ display: flex; flex-wrap: wrap-reverse; }
![](/web/image/753-06c8e0d1/8.png?access_token=370fd923-7280-45fe-aad1-2a2e731e2ebc)
- nowrap:
Los elementos del contenedor no se ajustaran, es una propiedad por defecto.
.flex-container{ display: flex; flex-wrap: nowrap; }
![](/web/image/754-036b6850/9.png?access_token=8ab73932-fb2c-426f-916f-3f0c78595c9d)
3. flex-flow
Es un atributo abreviado para configurar los atributos "flex-direction" y "flex-wrap" en una sola línea.
.flex-container{ display: flex; flex-flow: wrap row-reverse; }
.flex-container{ display: flex; flex-flow: row wrap; }
![](/web/image/755-f05bf4ee/10.png?access_token=f9c55354-0fb0-4e9a-841f-184d238b765b)
![](/web/image/738-e5925554/11.png?access_token=2621fd26-e0c4-4f46-9770-0924cc177ee6)
- flex-start:
Alinea los elementos al comienzo del contenedor.
.flex-container{ display: flex; justify-content: flex-start; }
![](/web/image/739-d7ad6717/12.png?access_token=7b13c1fc-4ed8-4164-a5fd-18244294e8c4)
- flex-end:
Alinea los elementos al final del contenedor.
.flex-container{ display: flex; justify-content: flex-end; }
![](/web/image/740-28b7c9e2/13.png?access_token=6229143a-e78d-43ae-a78a-b80b37a08553)
- space-around:
Muestra los elementos con espacio antes,entre y después de ellos.
.flex-container{ display: flex; justify-content: space-around; }
![](/web/image/725-4012f38d/14.png?access_token=30ee54be-9e9c-431e-8dd9-077d1b668d64)
-space-between:
Muestra los elementos con espacio entre ellos.
.flex-container{ display: flex; justify-content: space-between; }
![](/web/image/741-252f6f2f/15.png?access_token=c79f0880-1959-4209-816a-2387fe117c68)
![](/web/image/742-ef25166f/16.png?access_token=69c7abce-aeb2-483d-88e4-9c82865b1dfd)
- flex-start:
Alinea los elementos en la parte superior del contenedor.
.flex-container{ display: flex; align-items: flex-start; height: 500px; background-color: rgb(42, 42, 42) }
![](/web/image/743-280692d5/17.png?access_token=2b257c0c-188d-4185-923e-40915e6cb9fe)
-flex-end:
Alinea los elementos en la parte inferior del contenedor.
.flex-container{ display: flex; align-items: flex-end; height: 500px; background-color: rgb(42, 42, 42) }
![](/web/image/744-3ac3d4ac/18.png?access_token=58c981b9-cabd-4451-abb5-c84ade2e59a2)
-stretch:
Estira los elementos para llenar el contenedor, es la configuración por defecto de un elemento.
.flex-container{ display: flex; align-items: stretch; height: 200px; background-color: rgb(42, 42, 42) }
![](/web/image/745-311ed0c3/19.png?access_token=d3cdf11e-d147-45a1-b2e0-4dcce8f3380b)
- baseline:
Alinea los elementos buscando una línea base.
.flex-container{ display: flex; align-items: baseline; height: 200px; background-color: rgb(42, 42, 42) }
![](/web/image/746-d02c9ae9/20.png?access_token=6ea36105-e4d6-43e1-a0eb-0ae0efc3a5b8)
6. align-content
Es un atributo que se utiliza para alinear los elementos de un contenedor, para una mejor visualización se suele implementar junto a flex-wrap.
- flex-start:
Muestra los elementos desde el comienzo del contenedor.
.flex-container{ display: flex; flex-wrap: wrap; align-content: flex-start; height: 400px; background-color: rgb(42, 42, 42) }
![](/web/image/756-545a3bd1/21.png?access_token=a08731e0-3dbe-4e12-93d4-32883b9b2b73)
-flex-end:
Muestra los elementos en la parte inferior del contenedor.
.flex-container{ display: flex; flex-wrap: wrap; align-content: flex-end; height: 400px; background-color: rgb(42, 42, 42) }
![](/web/image/757-3bcb0d27/22.png?access_token=e94477d3-5e11-45fa-b730-d28cdbece030)
-center:
Muestra los elementos en el medio del contenedor.
.flex-container{ display: flex; flex-wrap: wrap; align-content: center; height: 400px; background-color: rgb(42, 42, 42) }
![](/web/image/758-042d31ec/23.png?access_token=dcf9a66f-a384-4fe9-b3eb-15f3153e23b4)
- space-between:
Ubica los elementos distribuidos en el contenedor.
.flex-container{ display: flex; flex-wrap: wrap; align-content: space-between; height: 400px; background-color: rgb(42, 42, 42) }
![](/web/image/759-98a4e85b/24.png?access_token=ad7ed02f-a55f-4797-ab64-741486540c7b)
-space-around:
Muestra los elementos con los mismos espacios entre ellos de forma equitativa.
.flex-container{ display: flex; flex-wrap: wrap; align-content: space-around; height: 400px; background-color: rgb(42, 42, 42) }
![](/web/image/760-fc4b6f50/25.png?access_token=9d711ec6-1c27-4a0e-b78c-f7ba14220368)
- stretch:
Estira los elementos para ocupar el espacio dentro del contenedor, esto es predeterminado. Importante: stretch es la configuración por defecto de los contenedores sino se especifica tamaño (height)
.flex-container{ display: flex; flex-wrap: wrap; align-content: stretch; height: 400px; background-color: rgb(42, 42, 42) }
![](/web/image/761-5cf2233c/26.png?access_token=56cc68ef-b88c-45f4-8eac-af3f5d21a6ff)
Si te interesa profundizar más en el tema te invito a ingresar a los siguientes link:
- Juega y aprende en flexboxfroggy.
- [https://flexboxfroggy.com/#es]
- Documentación.
- (https://developer.mozilla.org/es/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox)
Pedro Quiñones
I.A.S. Ingeniería, Aplicaciones y Software S.A.S.