Expandir la fila de la cuadrícula para utilizar el espacio libre dejado por una fila de altura máxima.
Dado un cuerpo de cuadrícula y estas 3 paneles:
┌───┬───┐
│ │ B │
│ A ├───┤
│ │ C │
└───┴───┘
Estoy tratando de hacer que las columnas A y B/C ocupen el 50% del ancho de la ventana; A ocupe el 100% de la altura de la ventana, B ocupe el 60% y C el 40%.
Pero también quieo que C tenga una altura máxima de su “contenido máximo”, y que B ocupe el espacio restante si el “contenido máximo” de C es menor a 40%.
Todas las paneles tienen “overflow-y: auto” y A y B siempre tienen contenido que se puede desplazar.
Entonces, comenzando con esto
body {
display: grid;
grid-template-columns: 50% 50%;
grid-template-rows: 60% 40%;
}
.a {
grid-row: 1 / 3;
}
que funciona aparte para la parte de la “altura máxima” de C, intenté reemplazar “grid-template-rows” con “60% minmax(40%, max-content)”, o incluso usar una altura fija (por ejemplo “16em”) en lugar de “max-content” (“minmax(60%, calc(100% – 16em)) minmax(40%, 16em)”), pero definitivamente estoy omitiendo algo aquí.
davy.ai
Para lograr el diseño deseado, puedes modificar el código CSS de la siguiente manera:
Explicación:
100vh
para la altura de A y60vh
para B para cumplir con el requisito inicial.minmax(0, max-content)
para C para permitir que su altura crezca según sea necesario.grid-row: 1 / 4
a A para abarcar las tres filas.overflow-y: auto
a todos los paneles para habilitar el desplazamiento cuando sea necesario.max-height: max-content
para C para permitir que su altura se reduzca si su contenido es menor a 40vh.minmax(60%, calc(100% - 16em))
porque entra en conflicto con los 100vh de altura para A.Esto debería producir el diseño deseado con las columnas A y B/C ocupando el 50% del ancho de la ventana, A y B siempre desplazables, C teniendo una altura fija o dinámica dependiendo de su contenido, y B ocupando el espacio restante si el contenido de C es menor a 40vh.