tutorial tablas para hojas framework example estilo español elegantes css css3 flexbox grid-layout css-grid

tablas - Filas de igual altura en el diseño de cuadrícula CSS



grid css responsive (3)

Respuesta corta

Si el objetivo es crear una cuadrícula con filas de igual altura, donde la celda más alta de la cuadrícula establece la altura para todas las filas, aquí hay una solución rápida y simple:

  • Establezca el contenedor en grid-auto-rows: 1fr

Cómo funciona

El diseño de cuadrícula proporciona una unidad para establecer longitudes flexibles en un contenedor de cuadrícula. Esta es la unidad fr . Está diseñado para distribuir espacio libre en el contenedor y es algo análogo a la propiedad flex-grow en flexbox.

Si configura todas las filas en un contenedor de cuadrícula a 1fr , digamos así:

grid-auto-rows: 1fr;

... entonces todas las filas tendrán la misma altura.

Realmente no tiene sentido desde el principio porque se supone que fr distribuye espacio libre. Y si varias filas tienen contenido con diferentes alturas, cuando se distribuye el espacio, algunas filas serían proporcionalmente más pequeñas y más altas.

Excepto , enterrado en las especificaciones de la cuadrícula está esta pequeña pepita:

fr fr

...

Cuando el espacio disponible es infinito (lo que ocurre cuando el ancho o la altura del contenedor de la cuadrícula es indefinido), las pistas de cuadrícula de tamaño flexible ( fr ) se dimensionan según su contenido mientras conservan sus proporciones respectivas.

El tamaño utilizado de cada pista de cuadrícula de tamaño flexible se calcula determinando el tamaño de max-content de cada pista de cuadrícula de tamaño flexible y dividiendo ese tamaño por el factor de flexión respectivo para determinar un "tamaño hipotético 1fr ".

El máximo de esos se usa como la longitud resuelta de 1fr (la fracción de flexión), que luego se multiplica por el factor de flexión de cada pista de la cuadrícula para determinar su tamaño final.

Entonces, si estoy leyendo esto correctamente, cuando se trata de una cuadrícula de tamaño dinámico (por ejemplo, la altura es indefinida), las pistas de la cuadrícula (filas, en este caso) se dimensionan según su contenido.

La altura de cada fila está determinada por el elemento de cuadrícula más alto ( max-content ).

La altura máxima de esas filas se convierte en la longitud de 1fr .

Así es como 1fr crea filas de igual altura en un contenedor de cuadrícula.

Por qué flexbox no es una opción

Como se señaló en la pregunta, las filas de igual altura no son posibles con flexbox.

Los elementos flexibles pueden tener la misma altura en la misma fila, pero no en varias filas.

Este comportamiento se define en la especificación de flexbox:

6. Líneas flexibles

En un contenedor flexible de varias líneas, el tamaño transversal de cada línea es el tamaño mínimo necesario para contener los elementos flexibles en la línea.

En otras palabras, cuando hay varias líneas en un contenedor flexible basado en filas, la altura de cada línea (el "tamaño cruzado") es la altura mínima necesaria para contener los elementos flexibles en la línea.

Entiendo que esto es imposible de lograr con Flexbox, ya que cada fila solo puede tener la altura mínima requerida para ajustar sus elementos, pero ¿se puede lograr esto con la nueva cuadrícula CSS?

Para que quede claro, quiero la misma altura para todos los elementos en una cuadrícula en todas las filas, no solo por cada fila. Básicamente, la "celda" más alta debe dictar la altura de todas las celdas, no solo las celdas de su fila.



Puede usar porcentajes para grid-template-rows manera

grid-template-rows: 50% 50%;