CSS: Grid - Bandas

En una cuadrícula CSS (grid), las bandas son las líneas de celdas que pueden estar dispuestas en horizontal (filas) o en vertical (columnas). Es posible definir filas y columnas de forma explícita con ciertas propiedades CSS. Pero, ¿qué sucede cuando un elemento debe ser reubicado y no hay más bandas definidas en el código CSS? ¿Cómo se ajusta a la cuadrícula?

Para estos casos, y solo con el propósito de reubicar un elemento de la cuadrícula en ausencia de bandas explícitas, se generarán filas o columnas de forma implícita, es decir, automáticamente. Estas bandas se pueden modificar con otras propiedades CSS. Conviene distinguirlas para saber cuándo usarlas.

  • Banda explícita: definida por el usuario. Se define mediante:
    • grid-template-rows
    • grid-template-columns
  • Banda implícita: generada automáticamente. Se modifica con:
    • grid-auto-rows
    • grid-auto-columns

En el artículo anterior sobre la distribución de filas y columnas en una cuadrícula se trata en detalle las propiedades CSS para modificar las bandas creadas de forma explícita, por tanto en este artículo se van a tratar las propiedades CSS que permiten adecuar las bandas generadas de forma implícita.

Propiedades CSS descritas en este artículo:

Propiedad Descripción
grid-auto-rows Indica el tamaño de las filas implícitas.
grid-auto-columns Indica el tamaño de las columnas implícitas.
grid-auto-flow Algoritmo de colocación automática.

Las propiedades ‘grid-auto-rows’ y ‘grid-auto-columns’

Con la propiedad CSS grid-auto-rows es posible especificar el tamaño para las filas que se crean de forma implícita, es decir, que no tienen un tamaño especificado a través de la propiedad grid-template-rows. Por tanto, en caso de que un elemento de la cuadrícula tenga que ser ubicado en una nueva fila generada automáticamente, podrá tener una altura determinada.

Por su parte, la propiedad CSS grid-auto-columns permite indicar el tamaño de las columnas implícitas, generadas de forma automática: aquellas que no se definen de forma explícita mediante la propiedad grid-template-columns. En este sentido, si un elemento HTML tiene que ser ubicado en una columna automática de la cuadrícula, también podrá tener una anchura especificada.

Valores

Los valores de las propiedades grid-auto-rows y grid-auto-columns pueden ser tamaños indicados mediante algunas unidades de longitud. También admiten algunas palabras clave y las funciones minmax() y fit-content().

Lista de valores:

Valor Descripción
tamaño Tamaño en unidades de longitud.
max-content Usa el tamaño máximo del contenido.
min-content Usa el tamaño mínimo del contenido.
auto Ajuste automático de tamaño.
minmax() Rango de tamaño entre dos valores.

Referente al tamaño, se indicará mediante valores positivos mediante unidades de longitud como puede se un porcentaje, píxeles o centímetros. También puede usarse la unidad relativa de fracciones fr. Una unidad fraccional (1fr) corresponde a la fracción del espacio disponible en el contenedor de la cuadrícula.

Con el max-content se estará usando el tamaño máximo del contenido para cada uno de los elementos hijos (ítems) de la banda en la cuadrícula.

El valor min-content permite indicar el tamaño mínimo del contenido de cada uno de los elementos hijos (ítems) de la banda en la cuadrícula.

Usando el valor auto el tamaño del ítem se ajustará de forma automática. Como máximo usará el tamaño máximo del contenido más grande de los ítems de la banda. Como mínimo usará el tamaño más pequeño del contenido.

Con el valor auto, los elementos hijos (ítems) pueden ser estirados con las propiedades align-content y justify-content.

Mediante la función minmax() se define un rango de tamaño, por lo que admite dos parámetros de longitud separados por una coma. El primer tamaño es el mínimo, y el segundo es el máximo. De esta forma, el tamaño del ítem se ajustará dentro del rango indicado. Por ejemplo: minmax(100px, 200px).

Veamos un ejemplo en código CSS:

.cuadricula {
  grid-auto-columns: 1fr;
  grid-auto-rows: minmax(50px, auto);
}

Múltiples valores

Las propiedades grid-auto-rows y grid-auto-columns admiten múltiples valores estando separados por un espacio en blanco. Cada valor que se introduce define el tamaño para una nueva banda generada automáticamente. Tantos valores, tantas bandas (filas o columnas) se estará definiendo.

El orden es el siguiente: el primer valor se aplicará a la primera banda, el segundo a la segunda, y así sucesivamente, hasta el último valor, que se aplicará al resto de bandas implícitas que se puedan llegar a generar.

Veamos un ejemplo. Código CSS:

.cuadricula {
  grid-auto-columns: 10px 20px 30px;
}

Si se crea una primera columna implícita, sus celdas tendrán un ancho de 10 píxeles. Si luego además se crea una segunda, sus celdas medirán 20 píxeles. El resto de columnas implícitas medirán 30 píxeles.

La propiedad ‘grid-auto-flow’

La propiedad CSS grid-auto-flow ayuda a controlar la colocación automática de los elementos dentro de la cuadrícula. Esta propiedad es un buen complemento para las propiedades anteriores, ya que permite modificar el algoritmo de colocación, como sería decidir si se quiere una fila o una columna.

Lista de valores:

Valor Descripción
row Añade los ítems en una fila implícita.
column Añade los ítems en una columna implícita.
dense Intenta rellenar espacios vacíos en la cuadrícula.

Los valores de esta propiedad pueden tomar dos formas: una sola palabra clave (row, column o dense) y/o dos palabras clave separadas mediante un espacio en blanco (row dense o column dense).

Con el valor dense se intenta rellenar los espacios disponibles de forma eficiente. En vez de reubicar los nuevos elementos en filas o columnas según convenga, el algoritmo de colocación buscará espacios vacíos en la cuadrícula.

Esto significa que, por ejemplo, en caso de existir zonas de la cuadrícula que no estén ocupadas, el algoritmo de colocación intentará llenar esas zonas antes de crear de forma implícita nuevas filas o nuevas columnas.

← Artículo anterior
Artículo siguiente →