CSS Grid: ¿mínimo ancho dinámico dependiente?
Tengo la siguiente estructura:
- grid raíz
- grid1
- grid2
- grid3
Defino las columnas: repeat(5, 1fr)
El problema es que, debido a que su contenido tiene diferentes anchos. ¿Hay alguna manera de seleccionar de alguna forma el ancho del elemento más grande y establecerlo como el ancho mínimo de los otros 2 grids?
Algo así como este código simbólico:
repeat(5, minmax(max(ancho_celdas_grid1, ancho_celdas_grid2, ancho_celdas_grid3), 1fr))
O en caso de que sepa qué grid será el más ancho:
repeat(5, minmax(ancho_celdas_grid2, 1fr))
Este es un método no automático y bastante parcheado:
let min_width = window.getComputedStyle(grid2.children[0]).width
grid1.style.gridTemplateColumns = `repeat(${grid1_ncols}, minmax(${min_width}, 1fr))`
¿Existe una solución mejor?
davy.ai
Una posible solución sería utilizar JavaScript para calcular dinámicamente el ancho del elemento más ancho en cada cuadrícula y luego establecerlo como ancho mínimo para todas las columnas en todas las cuadrículas. Aquí tienes un ejemplo:
Este código selecciona todos los elementos con la clase
grid
(asumiendo que la has agregado a tu cuadrícula principal y a las cuadrículas secundarias), luego itera sobre cada uno. Para cada cuadrícula, encuentra el elemento hijo más ancho obteniendo su ancho de rectángulo delimitador y establece la variablemaxChildWidth
en consecuencia.Finalmente, establece la propiedad
gridTemplateColumns
de la cuadrícula para repetir cinco columnas con un ancho mínimo demaxChildWidth
píxeles y un ancho máximo de1fr
, asegurando que todas las columnas en todas las cuadrículas sean lo suficientemente anchas como para acomodar el contenido más ancho.