Tailwind CSS

TailwindCSS

Tutorial TailwindCSS: Grid en Tailwind CSS

Tailwind CSS 3.4.10: Aprende a utilizar el sistema de grid en Tailwind CSS 3.4.10 para crear layouts responsivos y sofisticados. Configuración de gaps, columnas y filas.

Clases de contenedor grid

En Tailwind CSS, el uso de contenedores grid facilita la creación de layouts complejos y adaptativos. El contenedor grid es el elemento principal que define un contexto de grid y en el que se colocan los elementos hijos (items grid). Para definir un contenedor grid en Tailwind CSS, se utiliza la clase grid.

<div class="grid">
  <!-- Items grid aquí -->
</div>

Por defecto, los items dentro de un contenedor grid se distribuyen en una única columna. Para especificar el número de columnas o filas, se utilizan las clases de plantillas de columnas y filas respectivamente (estas secciones se cubren en detalle en otras partes de la lección).

Una característica importante de los contenedores grid es la capacidad de definir gaps (espacios) entre los items grid. Esto se logra con las clases gap, gap-x, y gap-y:

<div class="grid gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Elementos grid con gap.

En este ejemplo, gap-4 añade un espacio uniforme de 1rem (16px) entre todos los items grid. Si se desea definir espacios específicos entre columnas y filas, se pueden utilizar gap-x y gap-y:

<div class="grid gap-x-4 gap-y-2">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Elementos grid con gap.

Aquí, gap-x-4 añade un espacio horizontal de 1rem (16px) entre columnas y gap-y-2 añade un espacio vertical de 0.5rem (8px) entre filas.

Otra capacidad clave es la de definir el flujo automático de los items grid dentro del contenedor. La clase grid-flow-row es la configuración predeterminada, distribuyendo los items en filas. Para cambiar esta configuración para que los items fluyan en columnas, se usa grid-flow-col:

<div class="grid grid-flow-col">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Elementos grid.

En este caso, los items se distribuyen en columnas en lugar de filas. Adicionalmente, Tailwind CSS permite especificar cómo se deben colocar los items automáticamente en el grid con auto-rows-* y auto-cols-*, pero esto se trata en detalle en otra sección de la lección.

Para layouts más complejos, es posible combinar varias de estas clases en un mismo contenedor grid. Por ejemplo:

<div class="grid grid-cols-3 gap-4 grid-flow-row">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Grid con 3 columnas.

En este ejemplo, se define un grid con 3 columnas, un gap de 1rem (16px) entre todos los items y un flujo de filas. Los items se distribuyen en 3 columnas, respetando los gaps definidos.

Es fundamental comprender estas clases de contenedor grid para aprovechar al máximo las capacidades del sistema de grid en Tailwind CSS y construir layouts sofisticados y adaptativos.

Grid template column

En Tailwind CSS, la clase grid-cols-{n} se utiliza para definir el número de columnas en un contenedor grid. Esta clase permite especificar cuántas columnas debe tener el grid, facilitando la creación de layouts flexibles y adaptativos. La sintaxis es simple y directa, permitiendo una rápida implementación.

<div class="grid grid-cols-3 gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

En este ejemplo, grid-cols-3 crea un grid con tres columnas y gap-4 añade un espacio uniforme de 1rem (16px) entre los items. Los items se distribuyen automáticamente en las tres columnas.

Tailwind CSS también permite definir columnas de tamaño automático o fraccional utilizando clases como grid-cols-auto y grid-cols-{n}fr. Estas clases son útiles para layouts donde se requiere que las columnas se ajusten automáticamente según el contenido o se distribuyan proporcionalmente.

<div class="grid grid-cols-2 auto-cols-fr gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

En este caso, grid-cols-2 define dos columnas y auto-cols-fr asegura que las columnas ocupen un espacio proporcionalmente igual dentro del contenedor grid.

Para layouts más complejos, es posible especificar patrones diferentes de columnas combinando varias clases. Por ejemplo, se puede utilizar grid-cols-{n} junto con grid-cols-none para crear configuraciones personalizadas.

<div class="grid grid-cols-3 grid-cols-none gap-4">
  <div class="col-span-2 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="col-span-3 bg-blue-300">Item 4</div>
</div>

En este ejemplo, grid-cols-3 establece tres columnas, pero usando col-span-{n} se pueden hacer elementos que ocupen más de una columna, como col-span-2 para que el primer item ocupe dos columnas y col-span-3 para que el último item ocupe toda la fila.

Para asegurarse de que el layout sea adaptativo, Tailwind CSS permite aplicar diferentes configuraciones de columnas en función de los puntos de interrupción (breakpoints). Esto se logra mediante el uso de prefijos como sm, md, lg, xl, y 2xl.

<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

En este ejemplo, el grid tiene una columna por defecto (grid-cols-1), dos columnas en pantallas pequeñas (sm:grid-cols-2), tres columnas en pantallas medianas (md:grid-cols-3), y cuatro columnas en pantallas grandes (lg:grid-cols-4).

Esta flexibilidad en la definición de columnas permite a los desarrolladores crear layouts adaptativos y personalizados con facilidad, aprovechando las capacidades avanzadas de Tailwind CSS para construir aplicaciones web modernas y adaptativas.

Grid column start y end

En Tailwind CSS, las clases col-start-{n} y col-end-{n} se utilizan para posicionar los elementos dentro del grid, especificando el inicio y el final de una celda en las columnas. Estas clases permiten un control preciso sobre la ubicación de los elementos dentro del grid, facilitando la creación de layouts complejos.

Clases col-start-{n}

La clase col-start-{n} determina la línea de inicio de una celda en el grid. {n} representa el número de la línea del grid en la que debe comenzar la celda. Por ejemplo, col-start-2 indica que la celda debe comenzar en la segunda línea del grid.

<div class="grid grid-cols-4 gap-4">
  <div class="col-start-2 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

En este ejemplo, el primer item comienza en la segunda línea del grid, dejando la primera columna vacía.

Clases col-end-{n}

La clase col-end-{n} especifica la línea de finalización de una celda en el grid. {n} representa el número de la línea del grid en la que la celda debe terminar. Por ejemplo, col-end-4 indica que la celda debe terminar en la cuarta línea del grid.

<div class="grid grid-cols-4 gap-4">
  <div class="col-start-1 col-end-3 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

En este caso, el primer item comienza en la primera línea y se extiende hasta la tercera línea, ocupando dos columnas.

Combinación de col-start y col-end

Las clases col-start y col-end pueden combinarse para definir el área exacta que debe ocupar una celda en el grid. Esto es especialmente útil para crear layouts personalizados y complejos.

<div class="grid grid-cols-4 gap-4">
  <div class="col-start-1 col-end-3 bg-blue-300">Item 1</div>
  <div class="col-start-3 col-end-5 bg-blue-300">Item 2</div>
  <div class="col-start-1 col-end-5 bg-blue-300">Item 3</div>
</div>

Aquí, el primer item ocupa las dos primeras columnas, el segundo item ocupa las dos últimas columnas, y el tercer item se extiende a lo largo de todas las columnas.

Uso de col-span

Además de col-start y col-end, Tailwind CSS proporciona la clase col-span-{n} para simplificar la definición de celdas que abarcan múltiples columnas. La clase col-span-{n} permite que una celda se extienda a través de {n} columnas.

<div class="grid grid-cols-4 gap-4">
  <div class="col-span-2 bg-blue-300">Item 1</div>
  <div class="col-span-2 bg-blue-300">Item 2</div>
  <div class="col-span-4 bg-blue-300">Item 3</div>
</div>

En este ejemplo, el primer y segundo item ocupan dos columnas cada uno, mientras que el tercer item se extiende a lo largo de las cuatro columnas.

Consideraciones adicionales

Es posible combinar las clases de inicio y finalización de columnas con otras clases de Tailwind CSS para crear layouts más sofisticados y adaptativos. Las clases col-start-auto y col-end-auto permiten que los elementos se coloquen automáticamente en el grid según el flujo definido por el contenedor.

<div class="grid grid-cols-4 gap-4">
  <div class="col-start-auto col-end-auto bg-blue-300">Item 1</div>
  <div class="col-start-2 col-end-auto bg-blue-300">Item 2</div>
  <div class="col-start-1 col-end-5 bg-blue-300">Item 3</div>
</div>

En este caso, el primer item se coloca automáticamente, el segundo item comienza en la segunda línea y se coloca automáticamente, y el tercer item se extiende a lo largo de todas las columnas.

Para asegurar que los layouts sean adaptativos, es posible utilizar prefijos de puntos de interrupción (breakpoints) como sm, md, lg, xl, y 2xl junto con las clases de inicio y finalización de columnas.

<div class="grid grid-cols-4 gap-4">
  <div class="col-span-2 sm:col-span-1 md:col-span-2 lg:col-span-3 bg-blue-300">Item 1</div>
  <div class="col-span-2 sm:col-span-3 md:col-span-2 lg:col-span-1 bg-blue-300">Item 2</div>
  <div class="col-span-4 sm:col-span-4 md:col-span-4 lg:col-span-4 bg-blue-300">Item 3</div>
</div>

En este ejemplo, el número de columnas que ocupa cada item cambia según el tamaño de la pantalla, proporcionando un layout flexible y adaptativo.

Grid template rows

En Tailwind CSS, las clases grid-rows-{n} se utilizan para definir el número de filas en un contenedor grid. Estas clases permiten especificar cuántas filas debe tener el grid, facilitando la creación de layouts flexibles y adaptativos. La sintaxis es directa, permitiendo una rápida implementación.

<div class="grid grid-rows-3 gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

Grid de filas.

En este ejemplo, grid-rows-3 crea un grid con tres filas y gap-4 añade un espacio uniforme de 1rem (16px) entre los items. Los items se distribuyen automáticamente en las tres filas.

Tailwind CSS también permite definir filas de tamaño automático o fraccional utilizando clases como grid-rows-auto y grid-rows-{n}fr. Estas clases son útiles para layouts donde se requiere que las filas se ajusten automáticamente según el contenido o se distribuyan proporcionalmente.

<div class="grid grid-rows-2 auto-rows-fr gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

Grid de filas.

En este caso, grid-rows-2 define dos filas y auto-rows-fr asegura que las filas ocupen un espacio proporcionalmente igual dentro del contenedor grid.

Para asegurarse de que el layout sea adaptativo, Tailwind CSS permite aplicar diferentes configuraciones de filas en función de los puntos de interrupción (breakpoints). Esto se logra mediante el uso de prefijos como sm, md, lg, xl, y 2xl.

<div class="grid grid-rows-1 sm:grid-rows-2 md:grid-rows-3 lg:grid-rows-4 gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

En este ejemplo, el grid tiene una fila por defecto (grid-rows-1), dos filas en pantallas pequeñas (sm:grid-rows-2), tres filas en pantallas medianas (md:grid-rows-3), y cuatro filas en pantallas grandes (lg:grid-rows-4).

Esta flexibilidad en la definición de filas permite a los desarrolladores crear layouts adaptativos y personalizados con facilidad, aprovechando las capacidades avanzadas de Tailwind CSS para construir aplicaciones web modernas y adaptativas.

Grid row start y end

En Tailwind CSS, las clases row-start-{n} y row-end-{n} se utilizan para controlar la posición de los elementos dentro del grid, especificando el inicio y el final de una celda en las filas. Estas clases permiten una colocación precisa de los elementos, facilitando la creación de layouts complejos y personalizados.

La clase row-start-{n} define la línea de inicio de una celda en el grid donde {n} es el número de la línea del grid en la que debe comenzar la celda. Por ejemplo, row-start-2 indica que la celda debe comenzar en la segunda línea del grid.

<div class="grid grid-rows-4 gap-4">
  <div class="row-start-2 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

Comienzo de fila.

En este ejemplo, el primer item comienza en la segunda fila del grid, dejando la primera fila vacía.

La clase row-end-{n} especifica la línea de finalización de una celda en el grid donde {n} es el número de la línea del grid en la que la celda debe terminar. Por ejemplo, row-end-4 indica que la celda debe terminar en la cuarta línea del grid.

<div class="grid grid-rows-4 gap-4">
  <div class="row-start-1 row-end-3 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
</div>

Comienzo de fila.

En este caso, el primer item comienza en la primera línea y se extiende hasta la tercera línea, ocupando dos filas.

Las clases row-start y row-end se pueden combinar para definir el área exacta que debe ocupar una celda en el grid. Esto es especialmente útil para crear layouts personalizados y complejos.

<div class="grid grid-rows-4 gap-4">
  <div class="row-start-1 row-end-3 bg-blue-300">Item 1</div>
  <div class="row-start-3 row-end-5 bg-blue-300">Item 2</div>
  <div class="row-start-1 row-end-5 bg-blue-300">Item 3</div>
</div>

Final de fila.

Aquí, el primer item ocupa las dos primeras filas, el segundo item ocupa las dos últimas filas, y el tercer item se extiende a lo largo de todas las filas.

Además de row-start y row-end, Tailwind CSS proporciona la clase row-span-{n} para simplificar la definición de celdas que abarcan múltiples filas. La clase row-span-{n} permite que una celda se extienda a través de {n} filas.

<div class="grid grid-rows-4 gap-4">
  <div class="row-span-2 bg-blue-300">Item 1</div>
  <div class="row-span-2 bg-blue-300">Item 2</div>
  <div class="row-span-4 bg-blue-300">Item 3</div>
</div>

Final de fila.

En este ejemplo, el primer y segundo item ocupan dos filas cada uno, mientras que el tercer item se extiende a lo largo de las cuatro filas.

Es posible combinar las clases de inicio y finalización de filas con otras clases de Tailwind CSS para crear layouts más sofisticados y adaptativos. Las clases row-start-auto y row-end-auto permiten que los elementos se coloquen automáticamente en el grid según el flujo definido por el contenedor.

<div class="grid grid-rows-4 gap-4">
  <div class="row-start-auto row-end-auto bg-blue-300">Item 1</div>
  <div class="row-start-2 row-end-auto bg-blue-300">Item 2</div>
  <div class="row-start-1 row-end-5 bg-blue-300">Item 3</div>
</div>

Comienzo y final de fila.

En este caso, el primer item se coloca automáticamente, el segundo item comienza en la segunda línea y se coloca automáticamente, y el tercer item se extiende a lo largo de todas las filas.

Para asegurar que los layouts sean adaptativos, es posible utilizar prefijos de puntos de interrupción (breakpoints) como sm, md, lg, xl, y 2xl junto con las clases de inicio y finalización de filas.

<div class="grid grid-rows-4 gap-4">
  <div class="row-span-2 sm:row-span-1 md:row-span-2 lg:row-span-3 bg-blue-300">Item 1</div>
  <div class="row-span-2 sm:row-span-3 md:row-span-2 lg:row-span-1 bg-blue-300">Item 2</div>
  <div class="row-span-4 sm:row-span-4 md:row-span-4 lg:row-span-4 bg-blue-300">Item 3</div>
</div>

Comienzo y final de fila responsive.

En este ejemplo, el número de filas que ocupa cada item cambia según el tamaño de la pantalla, proporcionando un layout flexible y adaptativo.

Esta flexibilidad en la definición de filas permite a los desarrolladores crear layouts adaptativos y personalizados con facilidad, aprovechando las capacidades avanzadas de Tailwind CSS para construir aplicaciones web modernas y adaptativas.

Grid auto flow

En Tailwind CSS, la propiedad grid-auto-flow es fundamental para controlar cómo se colocan automáticamente los elementos dentro de un contenedor grid. Esta propiedad define el flujo de los elementos cuando no se especifican explícitamente sus posiciones en el grid. Tailwind CSS proporciona varias clases para configurar el flujo automático de los elementos grid: grid-flow-row, grid-flow-col, grid-flow-row-dense y grid-flow-col-dense.

Clases de flujo automático

  • grid-flow-row: Esta clase es la configuración predeterminada y coloca los elementos en filas sucesivas. Los elementos se añaden de izquierda a derecha y luego de arriba hacia abajo.
<div class="grid grid-flow-row grid-cols-3 gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Columnas de grid.

En este ejemplo, los elementos se distribuyen en filas con tres columnas cada una.

  • grid-flow-col: Esta clase cambia el flujo para colocar los elementos en columnas sucesivas. Los elementos se añaden de arriba hacia abajo y luego de izquierda a derecha.
<div class="grid grid-flow-col grid-rows-3 gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Columnas de grid.

Aquí, los elementos se distribuyen en columnas con tres filas cada una.

Clases de flujo denso

Las clases de flujo denso (grid-flow-row-dense y grid-flow-col-dense) permiten que los elementos se coloquen de manera más compacta, llenando automáticamente los espacios vacíos en el grid. Esto puede ser útil para grids que contienen elementos de diferentes tamaños.

  • grid-flow-row-dense: Coloca los elementos en filas de manera densa, intentando llenar todos los espacios vacíos.
<div class="grid grid-flow-row-dense grid-cols-3 gap-4">
  <div class="col-span-2 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="col-span-2 bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Filas densas.

En este ejemplo, los elementos se colocan en filas y los espacios vacíos se rellenan de manera óptima.

  • grid-flow-col-dense: Similar a grid-flow-row-dense, pero coloca los elementos en columnas de manera densa.
<div class="grid grid-flow-col-dense grid-rows-3 gap-4">
  <div class="row-span-2 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="row-span-2 bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Columnas densas.

Aquí, los elementos se colocan en columnas, llenando los espacios vacíos de manera eficiente.

Personalización del flujo

Tailwind CSS permite combinar estas clases con otras propiedades para crear layouts más complejos y personalizados. Por ejemplo, se pueden utilizar junto con clases de tamaño de columnas y filas (grid-cols-{n}, grid-rows-{n}) y clases de posición (col-start-{n}, row-start-{n}) para obtener un control más preciso sobre la disposición de los elementos.

<div class="grid grid-flow-row-dense grid-cols-4 gap-4">
  <div class="col-span-2 bg-blue-300">Item 1</div>
  <div class="col-start-3 bg-blue-300">Item 2</div>
  <div class="row-start-2 col-span-2 bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="col-span-3 bg-blue-300">Item 5</div>
</div>

Resultado del ejemplo.

En este ejemplo, se combinan grid-flow-row-dense con grid-cols-4 y clases de posición para crear un layout más sofisticado y adaptativo.

Consideraciones adicionales

La flexibilidad de las clases de flujo automático en Tailwind CSS permite a los desarrolladores crear layouts adaptativos y eficientes. Es posible utilizar prefijos de puntos de interrupción (breakpoints) como sm, md, lg, xl, y 2xl para aplicar diferentes configuraciones de flujo en función del tamaño de la pantalla.

<div class="grid sm:grid-flow-row md:grid-flow-col lg:grid-flow-row-dense xl:grid-flow-col-dense grid-cols-4 gap-4">
  <div class="col-span-2 bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="col-span-2 bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Resultado del ejemplo.

En este ejemplo, el flujo de los elementos cambia según el tamaño de la pantalla, proporcionando un layout adaptable y eficiente.

Grid auto columns y auto rows

En Tailwind CSS, las clases auto-cols-* y auto-rows-* permiten definir el tamaño automático de las columnas y filas en un grid. Estas clases son útiles cuando los elementos del grid no tienen un tamaño predeterminado y se necesita que se ajusten automáticamente según su contenido o según una fracción del espacio disponible.

Clases auto-cols-*

La clase auto-cols-* define el tamaño de las columnas que se generan automáticamente cuando no se especifica un tamaño explícito para las columnas. Algunas de las opciones más comunes incluyen auto, min, max, y fr.

  • auto-cols-auto: Las columnas se ajustan automáticamente al tamaño de su contenido.
<div class="grid grid-flow-col auto-cols-auto gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Columnas de grid.

En este ejemplo, cada columna se ajusta automáticamente al tamaño de su contenido.

  • auto-cols-min: Las columnas tienen un tamaño mínimo que se ajusta al contenido.
<div class="grid grid-flow-col auto-cols-min gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Columnas mínimas.

Aquí, las columnas se ajustan al tamaño mínimo necesario para su contenido.

  • auto-cols-max: Las columnas tienen un tamaño máximo que se ajusta al contenido.
<div class="grid grid-flow-col auto-cols-max gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Columnas máximas.

En este caso, las columnas se ajustan al tamaño máximo necesario para su contenido.

  • auto-cols-fr: Las columnas se ajustan a una fracción del espacio disponible.
<div class="grid grid-flow-col auto-cols-fr gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Columnas de grid.

Aquí, las columnas se distribuyen proporcionalmente según el espacio disponible en el contenedor grid.

Clases auto-rows-*

La clase auto-rows-* define el tamaño de las filas que se generan automáticamente cuando no se especifica un tamaño explícito para las filas. Al igual que auto-cols-*, algunas de las opciones más comunes incluyen auto, min, max, y fr.

  • auto-rows-auto: Las filas se ajustan automáticamente al tamaño de su contenido.
<div class="grid auto-rows-auto gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Filas auto.

En este ejemplo, cada fila se ajusta automáticamente al tamaño de su contenido.

  • auto-rows-min: Las filas tienen un tamaño mínimo que se ajusta al contenido.
<div class="grid auto-rows-min gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Filas mínimo.

Aquí, las filas se ajustan al tamaño mínimo necesario para su contenido.

  • auto-rows-max: Las filas tienen un tamaño máximo que se ajusta al contenido.
<div class="grid auto-rows-max gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Filas máximo.

En este caso, las filas se ajustan al tamaño máximo necesario para su contenido.

  • auto-rows-fr: Las filas se ajustan a una fracción del espacio disponible.
<div class="grid auto-rows-fr gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Filas de grid.

Aquí, las filas se distribuyen proporcionalmente según el espacio disponible en el contenedor grid.

Combinación de auto-cols-* y auto-rows-*

Es posible combinar auto-cols-* y auto-rows-* para definir tanto el tamaño automático de las columnas como de las filas en un grid.

<div class="grid auto-cols-fr auto-rows-fr gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Resultado del ejemplo.

En este ejemplo, tanto las columnas como las filas se distribuyen proporcionalmente según el espacio disponible en el contenedor grid.

Consideraciones adicionales

Para asegurar que el layout sea adaptativo, Tailwind CSS permite aplicar diferentes configuraciones de auto-cols-* y auto-rows-* en función de los puntos de interrupción (breakpoints). Esto se logra mediante el uso de prefijos como sm, md, lg, xl, y 2xl.

<div class="grid grid-flow-col grid-cols-1 sm:auto-cols--min md:auto-cols--max lg:auto-cols--fr gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
  <div class="bg-blue-300">Item 4</div>
  <div class="bg-blue-300">Item 5</div>
  <div class="bg-blue-300">Item 6</div>
</div>

Combinación de clases.

En este ejemplo, el tamaño de las columnas cambia según el tamaño de la pantalla, proporcionando un layout adaptable y eficiente.

Gap en Grid

En Tailwind CSS, la propiedad gap se utiliza para definir el espacio entre las celdas de un grid. Esta propiedad es fundamental para controlar la separación entre los elementos del grid, permitiendo un diseño más limpio y organizado. Tailwind CSS proporciona varias clases para ajustar tanto los gaps globales como los gaps específicos entre filas y columnas.

La clase gap-{size} define el espacio uniforme entre todas las celdas del grid. {size} puede ser cualquier valor de espaciado definido en la configuración de Tailwind CSS, como 1, 2, 4, 8, etc.

<div class="grid gap-4">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Gap en grid.

En este ejemplo, gap-4 añade un espacio uniforme de 1rem (16px) entre todas las celdas del grid.

Para definir gaps específicos entre filas y columnas, se utilizan las clases gap-x-{size} y gap-y-{size}. gap-x-{size} controla el espacio horizontal entre columnas, mientras que gap-y-{size} controla el espacio vertical entre filas.

<div class="grid gap-x-4 gap-y-2">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Gap en grid.

Aquí, gap-x-4 añade un espacio horizontal de 1rem (16px) entre columnas y gap-y-2 añade un espacio vertical de 0.5rem (8px) entre filas.

Tailwind CSS también permite definir gaps adaptativos utilizando prefijos de puntos de interrupción (breakpoints) como sm, md, lg, xl, y 2xl. Esto permite ajustar los gaps según el tamaño de la pantalla, proporcionando un diseño más adaptable.

<div class="grid gap-2 sm:gap-4 md:gap-6 lg:gap-8 xl:gap-10">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

En este ejemplo, el gap entre las celdas aumenta progresivamente según el tamaño de la pantalla: 0.5rem (8px) por defecto, 1rem (16px) en pantallas pequeñas (sm), 1.5rem (24px) en pantallas medianas (md), 2rem (32px) en pantallas grandes (lg), y 2.5rem (40px) en pantallas extra grandes (xl).

Para situaciones en las que se necesita un control más granular sobre los gaps, es posible combinar varias clases de gaps en un mismo contenedor grid. Por ejemplo, se pueden definir gaps globales y específicos al mismo tiempo.

<div class="grid gap-4 gap-x-2 gap-y-6">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Gap en grid.

En este caso, el gap global es de 1rem (16px), pero se sobrescribe con un gap horizontal de 0.5rem (8px) y un gap vertical de 1.5rem (24px).

Tailwind CSS también permite definir gaps utilizando valores de fracción (fr), lo que proporciona una mayor flexibilidad en la distribución del espacio. Por ejemplo, se puede definir un gap basado en una fracción del espacio disponible.

<div class="grid gap-4 gap-x-1fr gap-y-2fr">
  <div class="bg-blue-300">Item 1</div>
  <div class="bg-blue-300">Item 2</div>
  <div class="bg-blue-300">Item 3</div>
</div>

Gap en grid.

Aquí, gap-x-1fr añade un espacio horizontal basado en una fracción del espacio disponible, mientras que gap-y-2fr añade un espacio vertical basado en dos fracciones del espacio disponible.

Para asegurar un diseño consistente y limpio, es importante utilizar los gaps de manera adecuada en combinación con otras propiedades de grid en Tailwind CSS. Aprovechando las clases de gaps, los desarrolladores pueden crear layouts sofisticados y adaptativos con facilidad.

Certifícate en TailwindCSS con CertiDevs PLUS

Ejercicios de esta lección Grid en Tailwind CSS

Evalúa tus conocimientos de esta lección Grid en Tailwind CSS con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de TailwindCSS

Accede a todas las lecciones de TailwindCSS y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de TailwindCSS

Supera todos los ejercicios de programación del curso de TailwindCSS y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender y aplicar las clases de contenedor grid en Tailwind CSS.
  • Configurar plantillas de columnas y filas.
  • Utilizar clases de inicio y final de columnas y filas.
  • Controlar el flujo automático de elementos grid.
  • Ajustar el tamaño automático de columnas y filas.
  • Definir gaps entre elementos grid.