Generador CSS Flexbox

Construye diseños Flexbox visualmente · ajusta las propiedades del contenedor y los elementos, visualiza una vista previa en directo, copia el CSS.

Propiedades del contenedor

Vista previa en directo

CSS generado

Cómo usar

  1. Define las propiedades del contenedor: configura el contenedor flex, flex-direction, justify-content, align-items, flex-wrap y gap.
  2. Añade y configura los elementos flex: añade elementos hijos y define flex-grow, flex-shrink, flex-basis, align-self y order individualmente.
  3. Copia el CSS: obtén el CSS completo para el contenedor y los elementos, listo para usar en tu proyecto.

¿Por qué usar el generador Flexbox?

Flexbox es la herramienta esencial para la maquetación CSS unidimensional, alinear elementos en fila o en columna con controles potentes de distribución y alineación. Pero las propiedades son numerosas y sus interacciones complejas: justify-content frente a align-items, flex-grow frente a flex-basis, eje principal frente a eje transversal. Este generador interactivo ofrece retroalimentación visual instantánea cuando modificas cada propiedad, lo que lo convierte en la forma más rápida de aprender Flexbox y de obtener el CSS adecuado a tu diseño.

Funcionalidades

Preguntas frecuentes

¿Cuál es la diferencia entre justify-content y align-items?

justify-content distribuye los elementos a lo largo del eje principal (horizontal por defecto). align-items alinea los elementos a lo largo del eje transversal (vertical por defecto). Cuando flex-direction es column, los ejes se invierten, justify-content pasa a vertical y align-items a horizontal.

¿Cuándo usar Flexbox o CSS Grid?

Usa Flexbox para diseños unidimensionales, una fila de botones, una barra de navegación, una lista de tarjetas que deben saltar a la siguiente línea. Usa CSS Grid para diseños bidimensionales en los que debas controlar filas y columnas a la vez, como un diseño completo o una cuadrícula de tarjetas compleja.

¿Qué significa flex: 1?

flex: 1 es un atajo para flex-grow: 1; flex-shrink: 1; flex-basis: 0%. Le indica al elemento que crezca para llenar el espacio disponible, que se reduzca si es necesario y que parta de cero antes de repartir el espacio. Todos los elementos con flex: 1 se reparten el espacio por igual.

Lo que Flexbox realmente hace

Flexbox (Flexible Box Layout) es un modelo de diseño CSS diseñado para distribuir espacio y alinear elementos en una dirección unidimensional: ya sea una fila o una columna. Introduce dos conceptos centrales que determinan cómo se comporta todo: el eje principal (la dirección primaria en la que fluyen los elementos, horizontal por defecto) y el eje transversal (perpendicular al principal, vertical por defecto). Una vez que internalizas principal vs transversal, cada propiedad de Flexbox se asigna a uno de ellos: justify-content trabaja en el eje principal, align-items trabaja en el eje transversal, flex-direction intercambia qué eje es cuál.

Flexbox resolvió un conjunto de problemas de diseño que plagaron a los desarrolladores web desde 1998 hasta 2014. Antes de Flexbox, centrar un elemento verticalmente requería hacks (display: table-cell, márgenes negativos, position: absolute con transformaciones translate). Las columnas de igual altura requerían la técnica de «columnas falsas» con imágenes de fondo. Los footers pegajosos necesitaban cálculos precisos en píxeles. Flexbox hizo todos estos triviales: una declaración de una línea reemplaza décadas de soluciones CSS. La compensación es que Flexbox es unidimensional; para diseños bidimensionales (fila Y columna simultáneamente), CSS Grid (lanzado en 2017) es la mejor herramienta.

Las propiedades de Flexbox se dividen claramente en dos grupos: propiedades del contenedor (aplicadas al padre: display: flex, flex-direction, flex-wrap, justify-content, align-items, align-content, gap) y propiedades del elemento (aplicadas a los hijos: flex-grow, flex-shrink, flex-basis, align-self, order). Las propiedades del contenedor controlan patrones de diseño; las propiedades del elemento controlan excepciones individuales. Este generador muestra ambos conjuntos para que puedas experimentar cómo interactúan sin escribir código.

Cómo funciona esta herramienta tras bambalinas

La vista previa en vivo es un contenedor flex con elementos hijos de ejemplo. A medida que cambias las propiedades del contenedor (flex-direction, justify-content, etc.) a través de menús desplegables y entradas, JavaScript actualiza el estilo inline del contenedor de vista previa, y el navegador vuelve a renderizar el diseño. La vista previa es la implementación real de Flexbox del navegador, no una simulación de JavaScript: ves exactamente lo que tu CSS producirá en una página real.

Los controles por elemento te permiten ajustar cada hijo individualmente. Puedes agregar o eliminar elementos, establecer sus valores de flex-grow, flex-shrink, flex-basis, align-self y order, y ver cómo el contenedor redistribuye el espacio en consecuencia. Los indicadores visuales de eje muestran los ejes principal y transversal para la configuración actual, reforzando el modelo mental. Las propiedades son CSS real que puedes copiar directamente a tu hoja de estilos, sin necesidad de transpilación o prefijos de framework.

El panel de CSS generado se actualiza con cada interacción, produciendo dos reglas CSS: una para el contenedor (con las propiedades flex elegidas) y una para los elementos. Haz clic en Copiar CSS y las reglas se escriben en tu portapapeles. La herramienta misma nunca hace solicitudes de red; el renderizado de la vista previa, la generación de código y la escritura al portapapeles ocurren todo en JavaScript en tu dispositivo. Refresca la página y tu configuración se ha ido a menos que hayas copiado el CSS primero.

Breve historia de Flexbox

Flujos del mundo real

Trampas comunes y lo que significan

Privacidad: todo se ejecuta en tu navegador

Las herramientas de aprendizaje y diseño CSS vienen en dos sabores: páginas HTML simples ejecutando JavaScript del lado del cliente (privadas, rápidas, sin configuración) y editores en la nube con proyectos guardados (colaborativos pero con compensaciones de privacidad). Esta herramienta es del primer tipo. Tus selecciones de propiedad, tus configuraciones de elementos, tu CSS generado: todo permanece en tu sesión del navegador. Refresca la página y el estado se va a menos que hayas copiado el CSS primero.

Los riesgos de privacidad son bajos aquí porque las configuraciones de Flexbox raramente contienen información sensible. Aun así, la falta de analíticas importa: puedes experimentar libremente sin que tu proceso de prueba y error sea registrado. Particularmente útil en entornos de aula o capacitación corporativa donde hacer que los estudiantes o aprendices registren cuentas en plataformas de terceros es un punto de fricción. La herramienta es una sola página estática sin backend, utilizable en cualquier navegador, incluidas máquinas empresariales bloqueadas.

Cuándo otra herramienta es la opción correcta

Más preguntas frecuentes

¿Qué significa exactamente la abreviatura flex?

La abreviatura flex establece tres propiedades a la vez: flex: <grow> <shrink> <basis>. Valores comunes: flex: 1 (1, 1, 0%) para elementos de distribución igual, flex: 0 0 auto para elementos de tamaño fijo, flex: 1 1 250px para elementos que crecen/reducen desde un punto de inicio de 250px. La abreviatura tiene valores iniciales especiales cuando solo se proporcionan uno o dos valores; la forma explícita de tres valores evita sorpresas.

¿Cómo hago que los elementos se envuelvan a múltiples filas?

Establece flex-wrap: wrap en el contenedor. Los elementos se desbordan a una nueva línea cuando no encajan. Combina con flex-basis en los elementos para controlar cuántos encajan por fila: flex: 1 1 200px crea una cuadrícula responsive donde los elementos son al menos 200px, crecen para llenar el espacio restante y se envuelven a nuevas filas en pantallas estrechas. La propiedad gap del contenedor maneja el espaciado entre filas y elementos envueltos.

¿Puedo invertir el orden de los elementos flex?

Sí, varias formas. A nivel de contenedor: flex-direction: row-reverse (o column-reverse) invierte todos los elementos en orden. A nivel de elemento: la propiedad order asigna pesos numéricos; los elementos con números más bajos aparecen primero. El orden predeterminado es 0; establecer order: -1 en un elemento lo mueve al frente. Nota de accesibilidad: el reordenamiento visual no afecta el orden de tabulación ni el orden de lectura del lector de pantalla, lo que puede confundir a los usuarios de teclado y tecnología de asistencia. Usar con moderación.

¿Cuál es la diferencia entre align-items y align-content?

align-items alinea elementos dentro de su fila (o columna) a lo largo del eje transversal. align-content alinea las filas (o columnas) mismas dentro del contenedor, solo significativo cuando hay múltiples líneas envueltas. Si flex-wrap está establecido en nowrap (predeterminado), align-content no tiene efecto porque solo hay una línea. Usa align-items para alineación de una sola línea, align-content para alineación multi-línea.

¿Cómo centro un solo elemento con Flexbox?

La respuesta clásica: display: flex; justify-content: center; align-items: center; en el contenedor padre. Esto centra al hijo tanto horizontal como verticalmente. Solo horizontal: usar solo justify-content: center. Solo vertical: usar solo align-items: center. Si necesitas centrar dentro de un padre de altura desconocida, agrega min-height: 100vh al padre para que tenga espacio vertical para centrar. El patrón completo reemplaza 20 años de soluciones de centrado CSS.

¿Por qué mi truncamiento de texto no funciona en un contenedor flex?

Debido al valor predeterminado min-width: auto en los elementos flex. Text-overflow: ellipsis requiere que el elemento se desborde realmente de su contenedor; con el ancho mínimo predeterminado establecido al tamaño intrínseco del contenido, el elemento nunca se desborda. Arregla: agrega min-width: 0 al elemento flex que contiene el texto a truncar. Este es el bug de Flexbox más común en las respuestas de Stack Overflow: buscar «flex text-overflow ellipsis not working» devuelve miles de versiones de esta respuesta exacta.

Herramientas relacionadas