Estoy trabajando en una aplicación web donde quiero que el contenido llene la altura de toda la pantalla.
La página tiene un encabezado, que contiene un logotipo e información de la cuenta. Esto podría ser una altura arbitraria. Quiero que el div de contenido llene el resto de la página hasta el final.
Tengo un encabezado divy un contenido div. En este momento estoy usando una tabla para el diseño de esta manera:
CSS y HTML
#page {
height: 100%; width: 100%
}
#tdcontent {
height: 100%;
}
#content {
overflow: auto; /* or overflow: hidden; */
}
<table id="page">
<tr>
<td id="tdheader">
<div id="header">...</div>
</td>
</tr>
<tr>
<td id="tdcontent">
<div id="content">...</div>
</td>
</tr>
</table>
Se llena toda la altura de la página y no se requiere desplazamiento.
Para cualquier cosa dentro del contenido div, la configuración top: 0;lo colocará justo debajo del encabezado. A veces, el contenido será una tabla real, con su altura establecida al 100%. Poner headerdentro contentno permitirá que esto funcione.
¿Hay alguna manera de lograr el mismo efecto sin usar el table?
Actualizar:
Los elementos dentro del contenido divtambién tendrán alturas establecidas en porcentajes. Entonces, algo al 100% dentro divlo llenará hasta el fondo. Como lo harán dos elementos al 50%.
Actualización 2:
Por ejemplo, si el encabezado ocupa el 20% de la altura de la pantalla, una tabla especificada al 50% en el interior #contentocuparía el 40% del espacio de la pantalla. Hasta ahora, envolver todo en una tabla es lo único que funciona.



display:tablepropiedades relacionadas, consulte esta respuesta a una pregunta muy similar.