FlexBox CSS: ¿Qué es y como usar responsivamente? Ejemplos!
Flexbox CSS es una herramienta esencial para diseñar sitios web responsive y adaptativos. Este sistema permite alinear y distribuir espacio entre los elementos de una página de manera eficiente. En este artículo, aprenderás qué es Flexbox, para qué sirve y cómo usarlo con ejemplos detallados y código HTML. Veremos cómo implementarlo en tus proyectos, incluyendo en plataformas como WordPress, para crear diseños más flexibles y organizados.

Índice
1. ¿Qué es el Flexbox en CSS?
Flexbox, también conocido como CSS Flexible Box Layout, es un módulo de diseño de CSS3 que revolucionó la forma de crear interfaces web flexibles y diseños responsivos.
En esencia, Flexbox ofrece un método intuitivo para organizar elementos en un contenedor HTML, proporcionando un control preciso sobre su distribución, alineación y comportamiento en diferentes tamaños de pantalla. Podríamos decir que esta diseñado para mejorar el modelo de caja CSS.
1.1. ¿Qué hace el Flexbox en CSS?
1.1.1. Vamos desde el inicio:
Cuando creamos una página web e introducimos contenido (usando HTML (HyperText Markup Language)) como textos, imágenes, listas, tablas, etc., debemos saber que cada uno de estos elementos ocupa un cierto espacio dentro de la página, el cual está definido por el modelo de caja CSS.
Entonces, si nosotros vamos introduciendo cada uno de estos elementos por separado, por defecto, se irán colocando uno debajo del otro y ocupando el espacio que por defecto ocupan cada uno de ellos. Pero, ¿Qué pasa si queremos poner cada uno de estos elementos uno al lado del otro y dentro de una misma línea horizontal en la página?
Aquí es donde entra en juego Flexbox. Flexbox es un modelo de diseño en CSS que nos permite disponer los elementos de manera flexible y eficiente dentro de un contenedor, alineándolos horizontal o verticalmente y distribuyendo el espacio entre ellos de forma dinámica.
1.1.2. Entonces. ¿Qué hace Flexbox?
Flexbox facilita la disposición y alineación de elementos dentro de un contenedor, permitiendo colocarlos uno al lado del otro en la misma línea, distribuir el espacio de manera uniforme, centrar los elementos vertical y horizontalmente, y crear diseños responsivos que se adaptan a diferentes tamaños de pantalla.
1.1.3. ¿Cómo debo usar Flexbox para lograr este comportamiento en la página web?
Ahora que ya sabemos lo que queremos lograr en la página (poner los elementos uno al lado del otro horizontalmente), podemos seguir estos pasos usando Flexbox:
- Primero, introducimos un contenedor HTML que albergará a cada uno de estas etiquetas HTML o contenido (texto, imagen, listas, etc.) que vamos a introducir.
- Recuerda que, si introducimos cada uno de ellos individualmente, por defecto se colocarán uno debajo del otro en la página. Entonces, para lograr que se coloquen uno al lado del otro usando Flexbox, utilizamos un contenedor.
- Segundo, introducimos los elementos HTML dentro de este contenedor (estos elementos se llamarán “elementos flexibles hijos”).
- Tercero, aplicamos las reglas CSS de Flexbox para lograr el comportamiento deseado. Para esto, podríamos hacer lo siguiente:
- Aplicamos reglas CSS de Flexbox al contenedor HTML que alberga los elementos flexibles hijos.
- Aplicamos reglas CSS de Flexbox a todos los elementos flexibles hijos de manera general.
- Aplicamos reglas CSS de Flexbox a cada elemento flexible hijo de manera individual.
Siguiendo estos pasos, podemos modificar el comportamiento de los elementos HTML dentro de una página web según nuestras preferencias e incluso hacer que sean responsivos (que se vean bien en cualquier dispositivo; PC, celular, tablet).
2. ¿Cómo es la estructura de Flexbox?
Flexbox se basa en dos elementos principales:
- Contenedor Flexbox: Es un elemento HTML que se convierte en un contenedor flexible mediante la propiedad
display: flex. - Elementos Flexibles: Son los elementos HTML contenidos dentro del contenedor flexbox, que se comportan como elementos flexibles.
Ejemplo de un contenedor HTML y sus elementos HTML hijos:

En esta imagen, la parte celeste sería un elemento HTML que podemos usar como contenedor o elemento padre (como un <div>, <span>, <main>, etc.) de los elementos HTML hijo (los cuadros rosas) que apliquemos dentro de el.
¿Y como me puede ayudar esta imagen a entender para que sirve el modelo Flexbox?.
Pues bien, lo que hace básicamente Flexbox, es distribuir los elementos hijos que usemos dentro de su contenedor padre según las especificaciones (distribución, alineación y comportamiento) que usemos con este modelo Flexbox.
Y dichas especificaciones se aplican por medio de propiedades CSS que debemos aplicar tanto al elemento HTML padre (contenedor) como a sus elementos flexibles hijos. Los cuales iremos profundizando mas adelante.
Para una mayor compresión sería necesario también entender como funciona el modelo de caja (en el punto 1 dejamos un enlace) de un elemento HTML, lo cual, básicamente es el espacio que ocupa cada elemento HTML en la página web. Mientras que las propiedades CSS de Flexbox nos permiten manipular ese espacio según nuestras preferencias.
2.1. ¿Qué elementos HTML pueden ser considerados contenedores o hijos?
Aquí tienes ejemplos de elementos HTML que pueden ser contenedores y elementos flexibles hijos en los cuales normalmente se aplican las propiedades CSS de Flexbox.
EJEMPLOS DE CONTENEDORES FLEX
Casi cualquier elemento HTML puede ser un contenedor flex. Los más comunes son:
divsectionnavheaderfooterarticleasidemain
EJEMPLOS DE ELEMENTOS FLEXIBLES HIJOS
Los elementos flexibles hijos también pueden ser casi cualquier elemento HTML. Algunos ejemplos comunes son:
divspanpimgbuttonul(cuando se usa conlicomo hijos)ol(cuando se usa conlicomo hijos)articlesectionheaderfooter
2.2. Propiedades clave de Flexbox:
Para controlar el diseño de los elementos en Flexbox, se utilizan diversas propiedades CSS. Aquí dejamos algunas de las mas usadas, las cuales iremos explicando a profundidad mas adelante:
- 1. flex-direction:
- Define la dirección en la que se distribuyen los elementos flexibles (horizontal o vertical).
- 2. align-items:
- Controla la alineación vertical de los elementos flexibles dentro del contenedor.
- 3. justify-content:
- Define la distribución del espacio sobrante entre los elementos flexibles en el eje principal.
- 4. order:
- Modifica el orden predeterminado de los elementos flexibles dentro del contenedor.
- 5. flex-grow y flex-shrink:
- Controlan cómo los elementos flexibles se expanden o contraen para ocupar el espacio disponible.
- 6. flex-basis:
- Establece el tamaño mínimo de un elemento flexible.
- 7. align-self:
- Define la alineación individual de un elemento flexible en el eje transversal.
2.3. Ejemplo sencillo para entender como funciona Flexbox en CSS.
Imagina que quieres crear un menú de navegación horizontal con tres elementos: «Inicio», «Contacto» y «Acerca de». Flexbox te permite organizar estos elementos de manera eficiente y adaptativa, utilizando solo unas pocas líneas de CSS.
Para ello, primero debemos crear el contenedor HTML con un <nav>, y dentro colocamos los tres elementos usando listas <ul> y <li>. Y luego aplicamos las reglas CSS de Flexbox (recuerda que se basa en aplicar CSS al contenedor y sus elementos) para manipular su comportamiento según deseamos.
Contenedor y elementos hijos HTML:
<nav>
<ul>
<li><a href="#">Inicio</a></li>
<li><a href="#">Contacto</a></li>
<li><a href="#">Acerca de</a></li>
</ul>
</nav>Lenguaje del código: HTML, XML (xml)
Reglas CSS de Flexbox:
nav ul {
display: flex; /* Contenedor flexbox */
flex-direction: row; /* Dirección horizontal */
align-items: center; /* Alineación vertical: centro */
justify-content: space-between; /* Distribución del espacio */
}
nav li {
flex: 1; /* Crecimiento de los elementos */
padding: 10px; /* Espacio interno */
text-align: center; /* Alineación del texto */
}Lenguaje del código: CSS (css)
Explicación de este ejemplo:
- 1. Contenedor Flexbox:
- El elemento
ulse convierte en un contenedor flexbox condisplay: flex. - 2. Dirección:
flex-direction: rowindica que los elementos se distribuirán en horizontal.- 3. Alineación vertical:
align-items: centeralinea los elementos verticalmente en el centro del contenedor.- 4. Distribución del espacio:
justify-content: space-betweendistribuye el espacio disponible entre los elementos de manera uniforme, creando márgenes iguales a ambos lados.- 5. Crecimiento:
flex: 1en los elementosliindica que cada uno debería crecer para ocupar el espacio disponible equitativamente.- 6. Espacio interno y alineación de texto:
- Se agrega
paddingpara separar los elementos ytext-align: centerpara centrar el texto dentro de cada elemento.
Resultado:
Con este código, se crea un menú de navegación horizontal con los elementos distribuidos de manera uniforme, centrados verticalmente y con márgenes iguales entre ellos. Flexbox te permite ajustar fácilmente este diseño para adaptarlo a diferentes tamaños de pantalla o para cambiar la alineación y distribución de los elementos según tus necesidades.
Puntos clave:
- Flexbox simplifica la creación de diseños flexibles y responsivos.
- Permite un control preciso sobre la distribución, alineación y comportamiento de los elementos.
- Reduce la necesidad de utilizar floats y posicionamiento absoluto, mejorando la legibilidad del código CSS.
ACLARACIÓN: Aquí dejamos un ejemplo sencillo con la intención de que se entienda para que sirven estas propiedades de Flexbox, las cuales, como dijimos iremos explicando a profundidad a continuación para mejorar su compresión.
3. Ventajas y desventajas de usar Fexbox.
3.1. Ventajas de Flexbox:
Flexibilidad y adaptabilidad:
- Flexbox permite crear diseños que se adaptan a diferentes tamaños de pantalla y dispositivos, manteniendo la estructura y organización del layout.
- Los elementos Flexbox se redimensionan y distribuyen automáticamente para aprovechar al máximo el espacio disponible.
- Se puede usar para crear diseños con múltiples columnas, filas, envolturas y anidamientos, con gran flexibilidad.
Alineación precisa:
- Permite controlar la alineación de los elementos en el eje principal y transversal con gran precisión.
- Ofrece propiedades como
align-items,align-contentyjustify-contentpara un control total de la alineación.
Distribución dinámica del espacio:
- Los elementos Flexbox pueden crecer, contraerse o mantener su tamaño base según las propiedades
flex-grow,flex-shrinkyflex-basis. - El espacio disponible en el contenedor Flexbox se distribuye entre los elementos de forma eficiente.
Orden personalizado:
- El orden de los elementos en el flujo de visualización puede modificarse con la propiedad
order. - Esto permite crear diseños con estructuras no lineales y jerarquías personalizadas.
Facilidad de uso:
- La sintaxis de Flexbox es relativamente sencilla y fácil de aprender.
- Existen muchos recursos disponibles para aprender y dominar Flexbox.
- Es compatible con los navegadores modernos.
3.2. Desventajas de Flexbox:
Complejidad en diseños multidimensionales:
- Si bien Flexbox es ideal para diseños unidimensionales, puede resultar complicado manejar diseños más complejos que requieran flexibilidad en múltiples direcciones.
- En estos casos, se puede considerar el uso de Grid Layout, que ofrece un enfoque más adecuado para diseños bidimensionales.
Problemas de compatibilidad:
- Aunque Flexbox es compatible con la mayoría de los navegadores modernos, aún existen algunos problemas de compatibilidad con versiones antiguas, como Internet Explorer 8 e Internet Explorer 9.
- Para asegurar una experiencia consistente en todos los navegadores, puede ser necesario utilizar polyfills o librerías de terceros.
Limitaciones en alineación y distribución:
- A pesar de su versatilidad, Flexbox puede presentar dificultades al intentar realizar ciertos tipos de alineaciones o distribuciones complejas.
- En estos casos, se pueden requerir soluciones alternativas o técnicas de CSS más avanzadas.
Curva de aprendizaje:
- Si bien Flexbox es relativamente fácil de aprender, dominarlo por completo puede requerir práctica y experiencia.
- Es importante comprender los conceptos y propiedades clave de Flexbox para utilizarlo de manera efectiva.
RESUMEN: Flexbox es una herramienta poderosa y versátil para crear diseños web modernos, flexibles y responsivos. Sin embargo, es importante ser consciente de sus limitaciones y considerar alternativas como Grid Layout para diseños más complejos.
4. Propiedades para el contenedor flexbox.
Las propiedades CSS para el contenedor Flexbox te permiten definir cómo se organizan y distribuyen los elementos flexibles dentro de él. Estas propiedades son esenciales para crear diseños web flexibles y responsivos que se adaptan a diferentes tamaños de pantalla. Los mas comunes son:
- Display
- flex-direction:
- flex-wrap
- justify-content
- align-items
- align-content
- gap, row-gap, column-gap
- flex-flow
4.1. Display
En el modelo Flexbox, la propiedad display se aplica principalmente al contenedor, que es el elemento HTML que contiene los elementos flexibles (hijos). Al establecer display: en el contenedor, se activa el comportamiento Flexbox, permitiendo que sus hijos se distribuyan de acuerdo con las reglas de Flexbox.
4.1.1. Valores comunes de display:
block(por defecto):- Muestra el elemento como un bloque con un ancho completo y ocupa todo el ancho disponible en la página. Los elementos de bloque se apilan uno encima del otro en el orden en que aparecen en el HTML.
inline:- Muestra el elemento como una línea dentro del flujo de texto. Los elementos en línea no ocupan un ancho completo y se ajustan al contenido circundante.
none:- Oculta el elemento por completo. El elemento no ocupa espacio en el diseño y no interactúa con otros elementos.
flex:- Convierte el elemento en un contenedor Flexbox, permitiendo un control flexible de la distribución de los elementos internos.
grid:- Convierte el elemento en un contenedor de rejilla CSS, facilitando la creación de diseños en cuadrícula.
inline-block:- Combina características de
inlineyblock. El elemento se muestra en línea, pero ocupa un ancho y alto específicos.
- Combina características de
inline-flex:- Convierte el elemento en un contenedor flex que se comporta como un elemento en línea.
4.1.2. Ejemplos de uso:
- Mostrar un encabezado como un bloque con ancho completo:
h1 {
display: block;
}Lenguaje del código: CSS (css)
- Alinear un párrafo de texto como una línea dentro de otro elemento:
p {
display: inline;
}Lenguaje del código: CSS (css)
- Ocultar un botón cuando no sea necesario:
.boton {
display: none;
}Lenguaje del código: CSS (css)
- Crear un menú de navegación con Flexbox:
nav {
display: flex;
}Lenguaje del código: CSS (css)
- Diseñar una galería de imágenes con una rejilla CSS:
.galeria {
display: grid;
}Lenguaje del código: CSS (css)
- Mostrar una imagen como un bloque en línea con dimensiones específicas:
img {
display: inline-block;
width: 200px;
height: 150px;
}Lenguaje del código: CSS (css)
4.1.3. Propiedades relacionadas:
visibility: Controla la visibilidad de un elemento, pero no afecta su espacio en el diseño. Los valores sonvisible(por defecto) yhidden.position: Permite posicionar un elemento de forma absoluta, relativa o fija dentro del documento.float: Permite que un elemento se desplace del flujo normal del documento y se posicione junto a otros elementos.
RESUMEN: La propiedad display es una herramienta esencial para controlar la estructura y el comportamiento de los elementos en una página web. Al comprender sus diferentes valores y cómo interactúa con otras propiedades, puedes crear diseños web más organizados, flexibles y atractivos.
4.2. flex-direction:
La propiedad flex-direction en CSS es fundamental para establecer la dirección en la que se distribuyen los elementos flexibles dentro de un contenedor Flexbox. Esta propiedad te permite controlar la organización de los elementos, ya sea en horizontal, vertical o de otras formas personalizadas.
4.2.1. Valores comunes de flex-direction:
row(por defecto):- Distribuye los elementos en fila, uno al lado del otro, ocupando todo el ancho disponible del contenedor.
column:- Distribuye los elementos en columna, uno encima del otro, ocupando todo el alto disponible del contenedor.
row-reverse:- Invierte la dirección de la fila, colocando los elementos en orden inverso.
column-reverse:- Invierte la dirección de la columna, colocando los elementos en orden inverso.
4.2.2. Ejemplos de uso:
- Crear un menú de navegación horizontal:
nav {
display: flex;
flex-direction: row;
}Lenguaje del código: CSS (css)
- Diseñar una barra lateral vertical:
aside {
display: flex;
flex-direction: column;
}Lenguaje del código: CSS (css)
- Mostrar una lista de elementos en orden inverso:
ul {
display: flex;
flex-direction: row-reverse;
}Lenguaje del código: CSS (css)
- Crear una galería de imágenes en columna inversa:
.galeria {
display: flex;
flex-direction: column-reverse;
}Lenguaje del código: CSS (css)
4.2.3. Consideraciones adicionales:
- La propiedad
flex-directionafecta la alineación de los elementos en el eje principal. Se puede combinar conalign-itemspara controlar la alineación vertical en filas yjustify-contentpara controlar la alineación horizontal en columnas. - La dirección del flujo también influye en cómo se envuelven los elementos cuando no caben en una sola línea o columna. La propiedad
flex-wrapte permite controlar si los elementos se envuelven o se truncan. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
flex-directionse aplica de forma recursiva a cada contenedor.
RESUMEN: Dominar la propiedad flex-direction te permite crear diseños Flexbox con diferentes orientaciones y distribuciones, adaptando tu contenido a las necesidades de cada proyecto.
4.3. flex-wrap
La propiedad flex-wrap en CSS te permite controlar cómo se comportan los elementos flexibles dentro de un contenedor Flexbox cuando no caben en una sola línea o columna. Esta propiedad define si los elementos se envuelven en varias líneas o columnas, o si se truncan cuando superan el ancho o alto disponible.
¿Qué significa que los elementos se envuelvan? Cuando los elementos se «envuelven», significa que, cuando el tamaño combinado de los elementos hijos excede el espacio disponible en una sola línea o columna, en lugar de mantenerse en esa sola línea o columna y potencialmente desbordar el contenedor, los elementos se distribuyen en múltiples líneas o columnas. Esto se controla con esta propiedad flex-wrap.
¿Qué significa que los elementos se truncan? El término «truncar» en este contexto se refiere a la situación en la que el contenido de los elementos flexibles no cabe en el espacio disponible y, en lugar de envolverse o encogerse adecuadamente, puede ser cortado visualmente o quedar fuera del área visible del contenedor. Esto suele ocurrir cuando el contenedor tiene un tamaño fijo y los elementos no tienen permitido encogerse lo suficiente.
4.3.1. Valores comunes de flex-wrap:
nowrap(por defecto):- Los elementos no se envuelven, sino que se truncan si superan el ancho o alto disponible del contenedor.
wrap:- Los elementos se envuelven en varias líneas o columnas para ocupar todo el espacio disponible del contenedor.
wrap-reverse:- Los elementos se envuelven en varias líneas o columnas, pero en orden inverso al predeterminado.
4.3.2. Ejemplos de uso:
- Mostrar una lista de elementos en una sola fila sin envolver:
ul {
display: flex;
flex-wrap: nowrap;
}Lenguaje del código: CSS (css)
- Crear un menú de navegación que se envuelva en varias filas si es necesario:
nav {
display: flex;
flex-wrap: wrap;
}Lenguaje del código: CSS (css)
- Mostrar una galería de imágenes en varias columnas inversas:
.galeria {
display: flex;
flex-wrap: wrap-reverse;
}Lenguaje del código: CSS (css)
4.3.3. Consideraciones adicionales:
- La propiedad
flex-wrapsolo funciona siflex-directionestá configurado comorowocolumn. En direccionesrow-reverseocolumn-reverse, el comportamiento de envoltura es el mismo que conwrap. - La propiedad
flex-wrapafecta la distribución del espacio entre los elementos. Si se envuelven, el espacio se distribuye equitativamente en las nuevas líneas o columnas. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
flex-wrapse aplica de forma recursiva a cada contenedor.
RESUMEN: La propiedad flex-wrap te permite crear diseños Flexbox adaptables que se ajustan a diferentes tamaños de pantalla y dispositivos. Al comprender cómo funciona, puedes controlar el flujo de elementos y evitar que se trunquen o se desordenen cuando el contenido excede el espacio disponible.
4.4. justify-content
La propiedad justify-content en CSS te permite controlar la distribución del espacio disponible entre los elementos flexibles dentro de un contenedor Flexbox en el eje principal. Esta propiedad es crucial para crear diseños equilibrados y organizados, donde los elementos se alinean de forma adecuada según tus necesidades.
¿Cuál sería el eje principal? En el contexto de Flexbox, el «eje principal» es el eje a lo largo del cual los elementos flexibles se organizan dentro del contenedor flex. La dirección de este eje se define por la propiedad flex-direction.
- Eje Principal (
main axis): Determinado por la propiedadflex-direction. Puede ser horizontal o vertical.flex-direction: row(valor por defecto): El eje principal es horizontal, de izquierda a derecha.flex-direction: row-reverse: El eje principal es horizontal, pero de derecha a izquierda.flex-direction: column: El eje principal es vertical, de arriba hacia abajo.flex-direction: column-reverse: El eje principal es vertical, pero de abajo hacia arriba.
4.4.1. Valores comunes de justify-content:
flex-start(por defecto):- Alinea los elementos al inicio del eje principal, dejando espacio en el extremo final.
center:- Centra los elementos en el eje principal, distribuyendo el espacio equitativamente a ambos lados.
flex-end:- Alinea los elementos al final del eje principal, dejando espacio en el extremo inicial.
space-between:- Distribuye el espacio equitativamente entre todos los elementos, incluyendo los extremos.
space-around:- Agrega espacio alrededor de cada elemento, creando un espacio uniforme entre ellos.
4.4.2. Ejemplos de uso:
- Alinear los elementos de un menú de navegación a la izquierda:
nav {
display: flex;
justify-content: flex-start;
}Lenguaje del código: CSS (css)
- Centrar los elementos de una barra lateral vertical:
aside {
display: flex;
justify-content: center;
}Lenguaje del código: CSS (css)
- Distribuir los elementos de una galería de imágenes con espacio en los extremos:
.galeria {
display: flex;
justify-content: space-between;
}Lenguaje del código: CSS (css)
- Crear un diseño con espacio uniforme entre cada elemento:
.contenedor {
display: flex;
justify-content: space-around;
}Lenguaje del código: CSS (css)
4.4.3. Consideraciones adicionales:
- La propiedad
justify-contentse aplica en el eje principal, que depende de la propiedadflex-direction. En filas (row), el eje principal es horizontal, mientras que en columnas (column), es vertical. - La distribución del espacio con
justify-contentse ve afectada por el tamaño de los elementos, la propiedadflex-growy la propiedadflex-shrink. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
justify-contentse aplica de forma recursiva a cada contenedor.
RESUMEN: Dominar la propiedad justify-content te permite crear diseños Flexbox con diferentes distribuciones de espacio, adaptando la alineación de tus elementos a las necesidades de cada proyecto.
4.5. align-items
La propiedad align-items en CSS te permite controlar la alineación de los elementos flexibles dentro de un contenedor Flexbox a lo largo del eje transversal (o eje secundario). Esta propiedad es crucial para determinar cómo se distribuyen y alinean los elementos en el eje perpendicular al eje principal, contribuyendo a crear diseños equilibrados y visualmente atractivos.
¿Cuál sería el eje transversal (o eje secundario)? El «eje transversal» (o eje secundario) es el eje perpendicular al eje principal y se determina automáticamente según la dirección del eje principal definida por la propiedad flex-direction.
- Si el eje principal es horizontal (
roworow-reverse), el eje transversal es vertical. - Si el eje principal es vertical (
columnocolumn-reverse), el eje transversal es horizontal.
4.5.1. Valores comunes de align-items:
flex-start(por defecto):- Alinea los elementos al inicio del eje transversal, en la parte superior de una fila o al principio de una columna.
center:- Centra los elementos en el eje transversal, tanto vertical como horizontalmente dentro del contenedor.
flex-end:- Alinea los elementos al final del eje transversal, en la parte inferior de una fila o al final de una columna.
stretch:- Estira los elementos para que ocupen todo el alto disponible del contenedor Flexbox.
baseline:- Alinea los elementos por la línea base del texto, útil para elementos de texto o formularios.
4.5.2. Ejemplos de uso:
- Alinear los elementos de una lista verticalmente en el centro:
ul {
display: flex;
flex-direction: column;
align-items: center;
}Lenguaje del código: CSS (css)
- Centrar los elementos de una galería de imágenes horizontalmente:
.galeria {
display: flex;
align-items: center;
}Lenguaje del código: CSS (css)
- Hacer que los botones de un formulario ocupen toda la altura disponible:
.formulario {
display: flex;
flex-direction: column;
align-items: stretch;
}Lenguaje del código: CSS (css)
- Alinear los elementos de un menú de navegación por la línea base del texto:
nav {
display: flex;
align-items: baseline;
}Lenguaje del código: CSS (css)
4.5.3. Consideraciones adicionales:
- La propiedad
align-itemsse aplica en el eje transversal, que es perpendicular al eje principal. La dirección del eje transversal depende de la propiedadflex-direction. - La alineación con
align-itemsse ve afectada por la altura de los elementos. Si los elementos tienen alturas diferentes, algunos pueden quedar sin alinear. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
align-itemsse aplica de forma recursiva a cada contenedor.
RESUMEN: Al comprender cómo funciona la propiedad align-items, puedes crear diseños Flexbox con alineaciones verticales precisas y consistentes, mejorando la organización y la estética de tu sitio web.
4.6. align-content
La propiedad align-content en CSS te permite controlar la alineación y distribución del espacio entre las líneas de elementos flexibles dentro de un contenedor Flexbox a lo largo del eje transversal (o eje secundario) cuando hay espacio adicional disponible. Esta propiedad es especialmente útil cuando el contenido no ocupa todo el espacio disponible en el contenedor, permitiendo una alineación estratégica y uniforme de los elementos flexibles.
4.6.1. Valores comunes de align-content:
flex-start(por defecto):- Alinea los elementos en el inicio del eje transversal, dejando espacio en el extremo final.
center:- Centra los elementos en el centro del eje transversal, distribuyendo el espacio equitativamente a ambos lados.
flex-end:- Alinea los elementos en el final del eje transversal, dejando espacio en el extremo inicial.
space-between:- Distribuye el espacio equitativamente entre todas las líneas o columnas de elementos, incluyendo los extremos.
space-around:- Agrega espacio alrededor de cada línea o columna de elementos, creando un espacio uniforme entre ellas.
4.6.2. Ejemplos de uso:
- Alinear los elementos de una lista verticalmente en el centro, con espacio en la parte inferior:
ul {
display: flex;
flex-direction: column;
align-items: center;
align-content: space-between;
}Lenguaje del código: CSS (css)
- Centrar los elementos de una galería de imágenes horizontalmente, con espacio en ambos lados:
.galeria {
display: flex;
align-items: center;
align-content: space-around;
}Lenguaje del código: CSS (css)
- Distribuir las líneas de un párrafo justificado con espacio entre ellas:
p {
display: flex;
flex-direction: column;
align-items: flex-start;
align-content: space-between;
}Lenguaje del código: CSS (css)
4.6.3. Consideraciones adicionales:
- La propiedad
align-contentse aplica en el eje transversal, que es perpendicular al eje principal. La dirección del eje transversal depende de la propiedadflex-direction. - La alineación con
align-contentse ve afectada por la altura de los elementos y el espacio disponible en el contenedor. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
align-contentse aplica de forma recursiva a cada contenedor.
RESUMEN: Dominar la propiedad align-content te permite crear diseños Flexbox con distribuciones verticales más precisas y organizadas, aprovechando al máximo el espacio disponible en tus contenedores y mejorando la presentación de tu contenido.
«Las propiedades que hemos discutido anteriormente son las principales propiedades de contenedores en Flexbox. Sin embargo, hay algunas propiedades adicionales relacionadas y conceptos avanzados que pueden afectar el comportamiento de los contenedores flex. Aquí te dejo algunas más:«
4.7. gap, row-gap, column-gap
- gap: Define el espacio entre los elementos flex.
- row-gap: Define el espacio entre las filas de los elementos flex.
- column-gap: Define el espacio entre las columnas de los elementos flex.
- Ejemplo:

4.8. flex-flow
- Valores: Combina
flex-directionyflex-wrap. - Descripción: Es una propiedad shorthand para configurar ambas propiedades de una vez.
- Ejemplo:

5. Propiedades para los elementos hijos en Flexbox.
Las propiedades CSS para los elementos flexibles te permiten controlar cómo se comportan y se adaptan dentro de un contenedor Flexbox. Estas propiedades son cruciales para crear diseños web dinámicos y responsivos que se ajustan a diferentes tamaños de pantalla. Los mas comunes son:
5.1. order
La propiedad order en CSS te permite especificar el orden en que se muestran los elementos flexibles (hijos) dentro de un contenedor Flexbox. Esta propiedad es útil para reorganizar el orden natural de los elementos en el HTML, creando diseños más personalizados y adaptables a tus necesidades.
5.1.1. Valores comunes de order:
- Un número entero: Determina la posición del elemento en el flujo de Flexbox. Un valor más bajo coloca el elemento antes, mientras que un valor más alto lo coloca después. Los valores predeterminados son 0 para el primer elemento y aumentan en 1 para cada elemento subsecuente.
flex-start: Coloca el elemento en su posición natural dentro del flujo de Flexbox, según el orden del HTML.flex-end: Coloca el elemento al final del flujo de Flexbox, independientemente del orden del HTML.
5.1.2. Ejemplos de uso:
- Mostrar el primer elemento de una lista al final:
ul li {
display: flex;
}
ul li:first-child {
order: 2;
}Lenguaje del código: CSS (css)
- Crear una barra lateral con el orden personalizado:
aside {
display: flex;
}
aside nav {
order: 1;
}
aside ul {
order: 2;
}Lenguaje del código: CSS (css)
- Intercalar elementos de diferentes listas en un diseño:
.contenedor {
display: flex;
}
.lista1 li {
order: odd;
}
.lista2 li {
order: even;
}Lenguaje del código: CSS (css)
5.1.3. Consideraciones adicionales:
- La propiedad
orderno modifica el orden del HTML en sí. Solo afecta la representación visual de los elementos dentro del contenedor Flexbox. - Si varios elementos tienen el mismo valor de order, se mostrarán en el orden original del HTML.
- En diseños complejos con múltiples niveles de Flexbox, la propiedad
orderse aplica de forma recursiva a cada contenedor.
RESUMEN: Al comprender cómo funciona la propiedad order, puedes crear diseños Flexbox con órdenes personalizados y organizaciones flexibles, adaptando la disposición de tus elementos a tus ideas y necesidades específicas.
5.2. flex-grow
La propiedad flex-grow define la capacidad de un elemento flexible hijo (flex item) para crecer en relación a los otros elementos flexibles dentro del mismo contenedor. Se utiliza generalmente cuando hay espacio adicional en el contenedor (es decir, cuando el tamaño combinado de los elementos flexibles es menor que el tamaño del contenedor), flex-grow determina cuánto de ese espacio adicional debe asignarse a cada elemento flexible.
5.2.1. Valores de flex-grow
- Valor numérico (por defecto
0):- El valor es un número sin unidad que representa una proporción relativa.
- Un valor de
0significa que el elemento no crecerá más allá de su tamaño base. - Un valor mayor que
0permite al elemento crecer y ocupar espacio adicional. - Por ejemplo, si todos los elementos tienen
flex-grow: 1, el espacio adicional se distribuye equitativamente entre ellos. Si un elemento tieneflex-grow: 2, ocupará el doble del espacio adicional que un elemento conflex-grow: 1.
5.2.2. Ejemplos de uso:
- Estructura HTML:
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
</div>Lenguaje del código: HTML, XML (xml)
- Estructura CSS:
.flex-container {
display: flex;
height: 100px;
}
.flex-item {
text-align: center;
flex-grow: 1; /* Cada elemento crece igualmente */
}
.flex-item:nth-child(2) {
flex-grow: 2; /* El segundo elemento crece el doble que los otros */
}Lenguaje del código: CSS (css)
Visualización del ejemplo:
Con la configuración anterior, los elementos flexibles se comportarán de la siguiente manera:
Item 1yItem 3tienenflex-grow: 1, por lo que cada uno recibirá una porción del espacio adicional.Item 2tieneflex-grow: 2, por lo que recibirá el doble del espacio adicional en comparación conItem 1yItem 3.
5.2.3. Consideraciones adicionales:
- La propiedad
flex-growfunciona en conjunto con la propiedadflex-basispara determinar el tamaño base de un elemento antes de que crezca. - Si varios elementos tienen el mismo valor de flex-grow, el espacio disponible se distribuirá equitativamente entre ellos.
- En diseños complejos con múltiples niveles de Flexbox, la propiedad
flex-growse aplica de forma recursiva a cada contenedor.
RESUMEN: Dominar la propiedad flex-grow te permite crear diseños Flexbox adaptables y responsivos, donde los elementos se redimensionan dinámicamente para ocupar el espacio disponible de manera eficiente y mejorar la experiencia de usuario en diferentes tamaños de pantalla.
5.3. flex-shrink
La propiedad flex-shrink en CSS te permite controlar cómo se reduce el tamaño de los elementos flexibles dentro de un contenedor Flexbox cuando hay exceso de espacio. Esta propiedad es útil para adaptar el diseño a diferentes tamaños de pantalla o cuando el contenido cambia dinámicamente, evitando que los elementos se superpongan o se deformen.
5.3.1. Valores comunes de flex-shrink:
- Un número entero: Determina la proporción en que un elemento se contrae en comparación con otros elementos. Un valor más alto indica que el elemento se contraerá más, mientras que un valor más bajo indica que se contraerá menos.
- 0: Indica que el elemento no se contraerá en absoluto más allá de su tamaño base, incluso si hay exceso de espacio en el contenedor.
- Un valor de 1 o superior, permite que el elemento se reduzca para ajustar su tamaño dentro del contenedor cuando el espacio es limitado. Cuanto mayor sea el valor, mayor será la proporción de reducción que recibirá ese elemento en comparación con los demás.
5.3.2. Ejemplos de uso:
- Estructura HTML:
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
</div>Lenguaje del código: HTML, XML (xml)
- Estructura CSS:
.flex-container {
display: flex;
width: 300px; /* Espacio limitado del contenedor */
}
.flex-item {
text-align: center;
flex-shrink: 1; /* Cada elemento puede encogerse si es necesario */
width: 200px; /* Ancho base de cada elemento */
}
.flex-item:nth-child(2) {
flex-shrink: 2; /* El segundo elemento se encogerá el doble que los otros */
}Lenguaje del código: CSS (css)
Visualización del ejemplo:
Con la configuración anterior, los elementos flexibles se comportarán de la siguiente manera:
Item 1yItem 3tienenflex-shrink: 1, por lo que se encogerán proporcionalmente si es necesario.Item 2tieneflex-shrink: 2, por lo que se encogerá el doble en comparación conItem 1yItem 3cuando el espacio es limitado.
5.3.3. Consideraciones adicionales:
- La propiedad
flex-shrinkfunciona en conjunto con la propiedadflex-basispara determinar el tamaño base de un elemento antes de que se contraiga. - Si varios elementos tienen el mismo valor de flex-shrink, el espacio disponible se distribuirá equitativamente entre ellos para contraerse.
- En diseños complejos con múltiples niveles de Flexbox, la propiedad
flex-shrinkse aplica de forma recursiva a cada contenedor.
RESUMEN: Al comprender cómo funciona la propiedad flex-shrink, puedes crear diseños Flexbox flexibles y adaptables que se ajustan a diferentes tamaños de pantalla y situaciones, manteniendo la integridad del contenido y la experiencia de usuario.
5.4. flex-basis
La propiedad flex-basis en CSS define el tamaño base de un elemento flexible dentro de un contenedor Flexbox. Este tamaño inicial sirve como punto de partida para calcular cómo se distribuirá el espacio disponible entre los elementos cuando se apliquen las propiedades flex-grow y flex-shrink.
5.4.1. Relación con flex-grow y flex-shrink
flex-grow: Utiliza el tamaño definido porflex-basiscomo base para determinar cuánto crecerá el elemento cuando haya espacio adicional en el contenedor.flex-shrink: Utiliza el tamaño definido porflex-basiscomo base para determinar cuánto se reducirá el elemento cuando el espacio en el contenedor sea limitado.
5.4.2. Valores comunes de flex-basis:
auto(por defecto): Utiliza el valor de las propiedadeswidthyheightdel elemento como tamaño base.- Un valor de longitud: Establece el tamaño base como una unidad de longitud específica, como
px,remoem. content: Ajusta el tamaño base al contenido del elemento, tomando en cuenta el ancho y alto del texto, las imágenes y otros elementos internos.
5.4.3. Ejemplos de uso:
- Estructura HTML:
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
</div>Lenguaje del código: HTML, XML (xml)
- Estructura CSS:
.flex-container {
display: flex;
width: 600px; /* Ancho total del contenedor */
}
.flex-item {
text-align: center;
flex-grow: 1; /* Cada elemento puede crecer igualmente */
flex-basis: 150px; /* Tamaño base inicial de cada elemento */
}Lenguaje del código: CSS (css)
Visualización del ejemplo:
Con la configuración anterior, los elementos flexibles se comportarán de la siguiente manera:
- Cada elemento tiene un tamaño base inicial de
150pxdefinido porflex-basis. - Dado que el contenedor tiene un ancho total de
600px, hay suficiente espacio para acomodar tres elementos con un tamaño base de150pxcada uno. - Los elementos crecerán proporcionalmente según el valor de
flex-grow.
¿Qué si el ancho del contenedor fuera de 500px?
- Los elementos comenzarían con un tamaño base de
150pxcada uno, pero debido a que hay menos espacio disponible, se ajustarán utilizando las propiedadesflex-growyflex-shrink.
5.4.4. Consideraciones adicionales:
- La propiedad
flex-basisse utiliza junto conflex-growyflex-shrinkpara determinar el tamaño final de un elemento en Flexbox. - Si no se especifica
flex-basis, el navegador utilizará el valor de las propiedadeswidthyheightdel elemento. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
flex-basisse aplica de forma recursiva a cada contenedor.
RESUMEN: Al comprender cómo funciona la propiedad flex-basis, puedes crear diseños Flexbox con tamaños base precisos y comportamientos predecibles para la distribución del espacio, logrando layouts organizados y adaptables a diferentes contenidos y contextos.
5.5. flex (atajo para flex-grow, flex-shrink y flex-basis).
La propiedad flex en CSS es un atajo que te permite establecer los valores de flex-grow, flex-shrink y flex-basis de un elemento Flexbox en una sola declaración. Esta propiedad simplifica la definición de cómo un elemento se comportará dentro de un contenedor Flexbox, combinando tres propiedades importantes en una sola sintaxis.
SINTAXIS:
flex: [flex-grow] [flex-shrink] [flex-basis];Lenguaje del código: CSS (css)
5.5.1. Valores de flex:
flex-grow: Un número entero que indica la proporción en que un elemento crece en comparación con otros elementos. El valor predeterminado es 0.flex-shrink: Un número entero que indica la proporción en que un elemento se contrae en comparación con otros elementos. El valor predeterminado es 1.flex-basis: Un valor de longitud oautoque define el tamaño base del elemento antes de que crezca o se contraiga. El valor predeterminado esauto.
A su vez, la sintaxis de la propiedad flex puede tomar uno, dos o tres valores:
- Un Valor: Solo establece
flex-grow. Los valores por defecto paraflex-shrinkyflex-basisson1y0respectivamente. Ejemplo:flex: 1; /* Equivalente a flex: 1 1 0 */
- Dos Valores: Establece
flex-growyflex-shrink. El valor por defecto paraflex-basises0. Ejemplo:flex: 2 1; /* Equivalente a flex: 2 1 0 */
- Tres Valores: Establece
flex-grow,flex-shrink, yflex-basis. Ejemplo:flex: 1 0 200px; /* flex-grow: 1, flex-shrink: 0, flex-basis: 200px */
5.5.2. Ejemplo Práctico
- Estructura HTML:
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
</div>Lenguaje del código: HTML, XML (xml)
- Estructura CSS:
.flex-container {
display: flex;
width: 600px; /* Ancho total del contenedor */
}
.flex-item {
text-align: center;
flex: 1 1 150px; /* flex-grow: 1, flex-shrink: 1, flex-basis: 150px */
}Lenguaje del código: CSS (css)
Visualización del ejemplo:
Con la configuración anterior, los elementos flexibles se comportarán de la siguiente manera:
- Cada elemento tiene un tamaño base inicial de
150pxdefinido porflex-basis. - Cada elemento puede crecer proporcionalmente según el valor de
flex-grow. - Cada elemento puede encogerse proporcionalmente según el valor de
flex-shrink.
5.5.3. Valores por defecto y atajos que puede tomar la propiedad flex:
auto: Equivale a1 1 auto.none: Equivale a0 0 auto.- Solo
flex-grow: Si solo se proporciona un valor numérico, se interpreta comoflex-grow, conflex-shrinkpor defecto a1yflex-basisa0.

5.5.4. Beneficios de usar flex:
- Sintaxis más corta: Agrupa tres propiedades en una sola, lo que facilita la lectura y escritura del código CSS.
- Lectura más clara: Simplifica la comprensión del comportamiento de un elemento Flexbox.
- Menos código: Reduce la cantidad de líneas de código necesarias para definir las propiedades de Flexbox.
5.5.5. Consideraciones al usar flex:
- El orden de los valores en la propiedad
flexes importante y debe respetarse. - Si solo se especifican dos valores, el valor
flex-basisse omite y se toma comoauto. - Si solo se especifica un valor, se aplica a
flex-growyflex-shrinkde manera uniforme.
RESUMEN: La propiedad flex te ofrece una forma concisa y eficiente de definir el comportamiento de los elementos Flexbox, simplificando tu código CSS y mejorando la legibilidad de tus diseños. Al comprender cómo funciona y cómo combinarla con otras propiedades Flexbox, puedes crear layouts web modernos, adaptables y responsivos con mayor facilidad.
5.6. align-self
La propiedad align-self en CSS te permite controlar la alineación de un elemento Flexbox individual dentro de su contenedor. Esta propiedad es útil para ajustar la alineación de un elemento hijo específico, independientemente de la alineación general definida para el contenedor mediante align-items.
5.6.1. Valores comunes de align-self:
auto(por defecto): Toma la alineación definida por la propiedadalign-itemsdel contenedor Flexbox.flex-start: Alinea el elemento en el borde inicial del eje transversal ( o secundario).flex-end: Alinea el elemento en el borde final del eje transversal.center: Alinea el elemento en el centro del eje transversal.stretch: Estira el elemento para ocupar todo el espacio disponible en el eje transversal.baseline: Alinea el elemento con la línea base de los elementos del contenedor.
5.6.2. Ejemplo de uso:
Imagina un contenedor Flexbox con align-items: center que contiene tres elementos: un párrafo, una imagen y otro párrafo.
- Si aplicas
align-self: flex-startal primer párrafo, se alineará en la parte superior del contenedor, independientemente de que los demás elementos estén centrados. - Si aplicas
align-self: stretcha la imagen, ocupará todo el alto disponible en el contenedor, estirándose verticalmente. - El segundo párrafo, al no tener
align-selfespecificado, heredará la alineaciónalign-items: centerdel contenedor y se alineará en el centro.
5.6.3. Consideraciones al usar align-self:
- La propiedad
align-selfsolo funciona en elementos Flexbox. - Si varios elementos Flexbox dentro del mismo contenedor tienen
align-selfdefinido, cada uno se alineará según su valor individual. - En diseños complejos con múltiples niveles de Flexbox, la propiedad
align-selfse aplica de forma recursiva a cada contenedor.
RESUMEN: La propiedad align-self te da un mayor control sobre la alineación de los elementos Flexbox, permitiéndote crear diseños más personalizados y adaptables a tus necesidades. Al comprender cómo funciona y cómo combinarla con otras propiedades Flexbox, puedes lograr layouts web con una alineación precisa y consistente en diferentes contextos.
6. Ejemplo de Flexbox y sus propiedades CSS.
A continuación, dejaremos un ejemplo práctico que incluye las propiedades de Flexbox más utilizadas normalmente en la práctica. Este ejemplo demostrará cómo utilizar display, flex-direction, justify-content, align-items, flex-wrap, order, flex-grow, flex-shrink, flex-basis, y align-self.
- Para empezar, primero dejamos una estructura HTML con un contenedor
<div>, y 4 elementos HTML flexibles hijos. - Y a los cuales, luego aplicaremos las propiedades CSS de Flexbox a cada uno de ellos según corresponda para ver como funciona su lógica.
ESTRUCTUR HTML

ESTRUCTURA CSS FLEXBOX PARA EL CONTENEDOR:

ESTRUCUTRA CSS FLEXBOX PARA ELEMENTOS HIJOS (REGLAS GENERALES):

ESTRUCUTRA CSS FLEXBOX PARA ELEMENTOS HIJOS (REGLAS INDIVUDUALES):

Esta estructura tanto HTML como CSS (flexbox) que proporcionamos, en los navegadores se visualizaría así:

A continuación, presentamos una explicación detallada de cada una de las reglas CSS con Flexbox que hemos utilizado, y describimos cómo estas propiedades afectan el comportamiento y la disposición de los elementos tal como se muestra en la imagen:
1. CONTENEDOR FLEX (.container): Aquí dejamos una pequeña descripción de las propiedades Flexbox del aplicadas al CONTENEDOR <div>.
display: flex: Define el contenedor como un contenedor flex, habilitando todas las propiedades de Flexbox para sus elementos hijos. Esto hace que los elementos hijos (los rectángulos celestes) se comporten de manera flexible.flex-direction: row: Establece la dirección del eje principal en una fila, por lo que los elementos hijos se colocan uno al lado del otro horizontalmente. En la imagen, esto se ve reflejado en cómo los rectángulos celestes están alineados en una fila horizontal.justify-content: space-around: Distribuye el espacio horizontalmente alrededor de los elementos. Esto crea un espacio igual a ambos lados de cada elemento. En la imagen, puedes ver que hay un espacio uniforme a la izquierda y derecha de cada rectángulo celestealign-items: center: Alinea los elementos verticalmente en el centro del contenedor, asegurando que todos los elementos se centren a lo largo del eje transversal (vertical). En la imagen, esto significa que la mayoría de los rectángulos celestes están centrados verticalmente dentro del contenedor gris (después, aplicando reglas individuales puede cambiar).flex-wrap: wrap: Permite que los elementos se envuelvan en múltiples líneas si el contenedor no tiene suficiente espacio para todos los elementos en una sola fila. En la imagen, aunque no es evidente, si se agregaran más elementos y no hubiera suficiente espacio horizontal, los elementos se trasladarían a una nueva línea.gap: 10px: Define un espacio de 10px entre cada elemento, proporcionando separación y evitando que los elementos se toquen. En la imagen, puedes notar el espacio entre cada rectángulo celeste.height: 200px: Establece la altura del contenedor en 200px, definiendo el área vertical en la que los elementos pueden alinearse. En este ejemplo, el contenedor gris tiene una altura de 200px en la imagen (no es una propiedad Flexbox por si misma pero sirve para visualizar mejor el ejemplo).background-color: lightgray: Aplica un color de fondo gris claro al contenedor, diferenciando visualmente el área del contenedor del resto de la página. Esto se ve en el fondo gris del contenedor en la imagen (no es una propiedad Flexbox por si misma pero sirve para visualizar mejor el ejemplo)..padding: 10px: Añade un espaciado interno de 10px alrededor del contenedor, separando los elementos de los bordes del contenedor. En la imagen, esto proporciona un pequeño espacio entre los bordes del contenedor gris y los rectángulos celestes (no es una propiedad Flexbox por si misma pero sirve para visualizar mejor el ejemplo).
2. CONTENEDOR FLEX (.item): Aquí dejamos una pequeña descripción de las propiedades Flexbox a todos los elementos hijos de MANER GENERAL.
flex-grow: 1: Permite que cada elemento crezca para llenar el espacio disponible proporcionalmente. Cada rectángulo celeste ocupará una porción igual del espacio adicional.flex-shrink: 1: Permite que cada elemento se reduzca si es necesario para evitar el desbordamiento del contenedor. Esto asegura que los elementos no se salgan del contenedor gris en la imagen.flex-basis: 100px: Establece el tamaño base inicial de cada elemento en 100px antes de aplicar el crecimiento o la reducción. Los rectángulos celestes comienzan con un ancho base de 100px.background-color: lightblue: Aplica un color de fondo azul claro a cada elemento, diferenciándolos del contenedor. En la imagen, los rectángulos celestes tienen un fondo azul claro (no es una propiedad Flexbox por si misma pero sirve para visualizar mejor el ejemplo)…padding: 20px: Añade un espaciado interno de 20px dentro de cada elemento, proporcionando espacio adicional alrededor del contenido. Esto se ve en el espacio interno de cada rectángulo celeste en la imagen (no es una propiedad Flexbox por si misma pero sirve para visualizar mejor el ejemplo)…text-align: center: Centra el texto dentro de cada elemento, asegurando que el contenido textual se alinee en el medio horizontalmente. Los textos «Item 1», «Item 2», etc., están centrados en los rectángulos celestes en la imagen.
3. PROPIEDADES INDIVIDUALES: Aquí dejamos una descripción de las propiedades Flexbox a elementos hijo INDIVIDUALMENTE.
.item1: order: 2: Este elemento se colocará en el segundo lugar, a pesar de su posición original en el HTML. En la imagen, «Item 1» aparece en el segundo lugar..item2: order: 1; align-self: flex-end: Este elemento se colocará en primer lugar y se alineará al final del eje transversal (parte inferior del contenedor). En la imagen, «Item 2» está en el primer lugar y alineado al fondo del contenedor gris..item3: order: 3; flex-grow: 2: Este elemento se colocará en tercer lugar y crecerá dos veces más que los otros elementos, ocupando más espacio. En la imagen, «Item 3» está en el tercer lugar y es más ancho debido aflex-grow: 2..item4: order: 4: Este elemento se colocará en cuarto lugar. En la imagen, «Item 4» está en el cuarto lugar.
RESUMEN VISUAL:
- Distribución Horizontal: Los elementos están distribuidos con
space-around, creando espacio a ambos lados de cada elemento. - Alineación Vertical: La mayoría de los elementos están centrados verticalmente, excepto «Item 2», que está alineado al fondo del contenedor.
- Orden: Los elementos están en el orden especificado por sus propiedades
order. - Crecimiento y Encogimiento: Los elementos ocupan espacio de manera flexible, con «Item 3» creciendo más que los otros.
Con estas propiedades Flexbox, se logra una disposición flexible, ordenada y centrada de los elementos dentro del contenedor, proporcionando un diseño limpio y adaptable.
7. ¿Al usar Flexbox mi pagina web ya se ve responsivamente?
No necesariamente. Si bien Flexbox facilita la creación de diseños que se adaptan a diferentes tamaños de pantalla, hacer que una página web sea completamente responsiva generalmente requiere considerar varios aspectos adicionales del diseño web responsivo. A continuación, se describen algunas consideraciones:
7.1. Flexbox y Responsividad
- Flex-wrap: Permite que los elementos se envuelvan en varias líneas si el espacio disponible es insuficiente. Esto es útil para evitar que los elementos se desborden del contenedor en pantallas más pequeñas.
- Flex-grow, flex-shrink y flex-basis: Estas propiedades permiten que los elementos crezcan, se encojan o tengan un tamaño base flexible, adaptándose dinámicamente al espacio disponible.
7.2. Consideraciones Adicionales para un Diseño Responsivo
- Media Queries:
- Utiliza media queries para aplicar diferentes estilos CSS en función del tamaño de la pantalla. Esto te permite ajustar el diseño y la disposición de los elementos en pantallas más pequeñas o más grandes.

Este CSS de media Query @media (max-width: 600px) {}, dice que las reglas CSS que se encuentren dentro de sus corchetes, se aplicarán solo cuando el ancho de la pantalla es de 600 píxeles o menos.
- Unidades Relativas:
- Usa unidades relativas como porcentajes (
%),em,rem, yvw(viewport width),vh(viewport height) para tamaños de fuente, márgenes, y padding, en lugar de unidades fijas como píxeles (px). Esto permite que los elementos se ajusten de manera proporcional al tamaño de la pantalla.
- Usa unidades relativas como porcentajes (
- Imágenes y Videos Responsivos:
- Asegúrate de que las imágenes y los videos se adapten al tamaño de la pantalla utilizando propiedades como
max-width: 100%yheight: auto.
- Asegúrate de que las imágenes y los videos se adapten al tamaño de la pantalla utilizando propiedades como

- Layout Fluido:
- Diseña el layout de tu página de manera fluida para que los elementos puedan adaptarse de manera natural a diferentes anchos de pantalla. Utiliza contenedores flexibles y evita diseños rígidos.
- Pruebas en Diferentes Dispositivos:
- Prueba tu página web en diferentes dispositivos y tamaños de pantalla para asegurarte de que se vea bien y funcione correctamente en todos ellos. Usa herramientas como el modo de vista responsiva en los navegadores o servicios como BrowserStack.
8. ¿Puedo usar Flexbox si tengo una página web en WordPress?
Sí, aunque debes realizar algunos pasos extras, es posible. WordPress es altamente flexible y te permite personalizar el diseño de tu sitio web de varias maneras, incluyendo la utilización de CSS personalizado para implementar Flexbox.
A continuación, te explico cómo puedes hacerlo:
8.1. Métodos para Usar Flexbox en WordPress
- Usando el Editor de Temas (Theme Editor)
- Puedes añadir tu CSS personalizado directamente en el archivo de estilo de tu tema (
style.css). Ve a Apariencia > Editor de temas y selecciona el archivostyle.csspara editarlo.
- Puedes añadir tu CSS personalizado directamente en el archivo de estilo de tu tema (
- Personalizador de Temas (Theme Customizer)
- Ve a Apariencia > Personalizar > CSS adicional. Aquí puedes añadir CSS personalizado que se aplicará al sitio web.
- Usando un Plugin de CSS Personalizado
- Instala un plugin como Simple Custom CSS o Custom CSS and JS que te permita añadir CSS personalizado sin tener que editar directamente los archivos del tema.
- Usando un Constructor de Páginas
- Muchos constructores de páginas como Elementor, Beaver Builder, o Divi tienen opciones avanzadas de diseño que te permiten añadir CSS personalizado directamente a los elementos.
8.2. Ejemplo de Uso de Flexbox en WordPress
Supongamos que tienes una página con una estructura HTML específica y quieres aplicar Flexbox para alinear elementos. Aquí hay un ejemplo paso a paso:
HTML Estructural (en una página o en un widget HTML personalizado)
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
<div class="flex-item">Item 4</div>
</div>Lenguaje del código: HTML, XML (xml)
CSS Personalizado (añádelo en el personalizador de temas, archivo style.css o usando un plugin de CSS personalizado)
.flex-container {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-items: center;
gap: 10px;
background-color: lightgray;
padding: 10px;
}
.flex-item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 100px;
background-color: lightblue;
padding: 20px;
text-align: center;
}Lenguaje del código: CSS (css)
Explicación de las propiedades Flexbox usadas en este ejemplo:
- display: flex;: Define el contenedor como un contenedor flex.
- flex-wrap: wrap;: Permite que los elementos se envuelvan en varias líneas si el espacio es insuficiente.
- justify-content: space-around;: Distribuye el espacio de manera uniforme alrededor de los elementos.
- align-items: center;: Alinea los elementos verticalmente en el centro del contenedor.
- gap: 10px;: Define un espacio de 10px entre los elementos.
8.2.1. Aplicación práctica de este Flexbox en WordPress:
- Accede al personalizador de WordPress:
- Ve a Apariencia > Personalizar > CSS adicional.
- Copia y pega el CSS personalizado en el cuadro de texto (asegúrate que los selector CSS se encuentre bien aplicado).
- Edita la página o entrada:
- Si estás usando el editor clásico, puedes pegar el HTML en el editor de texto.
- Si estás usando el editor de bloques (Gutenberg), puedes usar un bloque HTML personalizado y pegar el HTML allí.
- Guardar y Previsualizar:
- Guarda los cambios y previsualiza tu sitio web para ver cómo se aplican las propiedades Flexbox.
CONSIDERACIONES:
- Compatibilidad de Temas: Asegúrate de que tu tema de WordPress no tenga estilos que puedan interferir con tus estilos personalizados.
- Resposividad: Añade media queries para asegurar que tu diseño sea responsivo y se vea bien en diferentes dispositivos.
RESUMEN: Sí puedes usar propiedades Flexbox en WordPress para modificar la alineación y el comportamiento de los elementos HTML, y hay varias formas de añadir CSS personalizado a tu sitio web para lograr el diseño deseado.
PREGUNTAS FRECUENTES
Flexbox, o Flexible Box Layout, es un modelo de diseño en CSS que permite la distribución y alineación de elementos dentro de un contenedor de manera flexible y eficiente.
Para activar Flexbox en un contenedor, debes establecer la propiedad ‘display: flex;’ en el elemento contenedor.
El eje principal es la dirección en la que se colocan los elementos hijos dentro del contenedor flex. Por defecto, es horizontal (fila), pero puede ser vertical (columna) utilizando la propiedad ‘flex-direction’.
Para alinear los elementos en el centro del contenedor tanto horizontal como verticalmente, puedes usar las propiedades ‘justify-content: center;’ y ‘align-items: center;’.
La propiedad ‘flex-grow’ define la capacidad de un elemento para crecer y ocupar el espacio disponible dentro del contenedor flex. Un valor mayor de ‘flex-grow’ permitirá que el elemento crezca más en comparación con otros elementos.
Para hacer que un diseño Flexbox sea responsivo, puedes usar media queries en CSS para ajustar las propiedades de Flexbox según el tamaño de la pantalla. Por ejemplo, cambiar ‘flex-direction’ a ‘column’ en pantallas más pequeñas.
ARTÍCULOS RELACIONADOS
- Media Query en CSS: ¿Qué es y como usar? Ejemplos!
- GRID CSS: ¿Qué es y como usar?
- Sintaxis CSS: ¿Cómo es su estructura correcta?
- Estilo CSS interno, externo e inline: Diferencias y ejemplos!
- ¿Qué son y como hacer TRANSICIONES en CSS? Con ejemplos!
- Animaciones CSS: ¿Qué son y como hacerlas? Guía completa.
