Utilia

Generador visual de Flexbox y Grid

Crea diseños con flexbox y CSS grid de forma visual. Ajusta el contenedor y los elementos, nombra áreas de grid, mira el resultado y copia el CSS y el HTML.

Ajustes predefinidos

Diseño

Haz clic en un elemento de la vista previa para seleccionarlo y editar sus propiedades más abajo.

Contenedor
Elementos

Cómo usar el generador de Flexbox y Grid

  1. Elige un Diseño: Flexbox o Grid, o parte de uno de los Ajustes predefinidos (Centrado, Barra de navegación, Tarjetas con salto de línea, Barra lateral, Cuadrícula de tarjetas adaptable, Santo grial, 12 columnas).
  2. Ajusta las propiedades del Contenedor. En flexbox: flex-direction y flex-wrap. En grid: grid-template-columns, grid-template-rows, grid-auto-flow, justify-items y grid-template-areas. Ambos comparten justify-content, align-items, align-content, row-gap (px) y column-gap (px).
  3. Gestiona los Elementos con Añadir elemento, Eliminar el elemento seleccionado y Restablecer el elemento seleccionado. Haz clic en un elemento de la vista previa (o llega a él con el tabulador y pulsa Intro) para seleccionarlo.
  4. Edita el elemento seleccionado: order y align-self en los dos modos; flex-grow, flex-shrink y flex-basis en flexbox, y grid-area, grid-column, grid-row y justify-self en grid.
  5. Copia el Código CSS y el Código HTML correspondiente con sus botones Copiar.

Cada control es un campo de formulario estándar, así que todo el generador funciona solo con el teclado. El CSS contiene únicamente las propiedades que has cambiado respecto a sus valores por defecto, lo que lo mantiene breve, y los elementos con los mismos ajustes comparten una regla (.item cuando coinciden todos).

Flexbox en pocas palabras

Flexbox coloca los elementos a lo largo de un eje. flex-direction define el eje principal (una fila o una columna); justify-content reparte los elementos sobre él (center, space-between…) y align-items los sitúa en el eje transversal. Con flex-wrap: wrap, los elementos que no caben pasan a una nueva línea, y align-content distribuye después esas líneas.

Cada elemento tiene tres propiedades de tamaño, que suelen escribirse juntas como flex:

  • flex-basis: el tamaño inicial (auto usa el contenido o el width);
  • flex-grow: cuánto espacio libre ocupa el elemento (0 = nada, 1 = una parte igual);
  • flex-shrink: cuánto cede cuando falta espacio (0 = nunca se encoge).

El ajuste Barra lateral muestra el patrón clásico: una barra lateral con flex-basis: 200px y flex-shrink: 0, y una zona principal con flex-grow: 1.

CSS Grid en pocas palabras

Grid coloca los elementos en dos dimensiones. grid-template-columns: repeat(3, 1fr) crea tres columnas iguales; fr es una fracción del espacio libre. repeat(auto-fill, minmax(120px, 1fr)) crea tantas columnas de al menos 120px como quepan, lo que da una cuadrícula de tarjetas adaptable sin ninguna media query.

Los elementos rellenan las celdas en orden, salvo que los coloques tú: grid-column: span 2 hace que un elemento ocupe dos columnas, y grid-column: 1 / -1 lo extiende a lo largo de toda la fila.

grid-template-areas te permite dibujar el diseño con nombres. Escribe una fila por línea, por ejemplo header header y luego nav main, y asigna a los elementos grid-area: header o grid-area: main. Un punto marca una celda vacía. Todas las filas deben tener el mismo número de celdas y cada nombre debe formar un rectángulo; si no, la herramienta te avisa.

Preguntas frecuentes

¿Uso flexbox o grid?

Flexbox para contenido de una sola dimensión, como barras de herramientas, grupos de botones o centrado. Grid cuando las filas y las columnas deben alinearse, como en maquetas de página y galerías de tarjetas. Se combinan bien: una cuadrícula de tarjetas cuyo interior usa flexbox.

¿Por qué align-items no cambia nada?

En una fila, los elementos se estiran por defecto hasta la altura del contenedor, y el contenedor solo es tan alto como su contenido. Dale una altura, o fíjate en la vista previa, que tiene una altura mínima.

¿Para qué sirve gap?

Define el espacio entre los elementos (no a su alrededor). Funciona tanto en flexbox como en grid en todos los navegadores actuales.

¿order cambia el orden de lectura?

No. order solo mueve los elementos visualmente; los lectores de pantalla y la navegación con teclado siguen el orden del HTML, así que úsalo con moderación.