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 div
y 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 header
dentro content
no permitirá que esto funcione.
¿Hay alguna manera de lograr el mismo efecto sin usar el table
?
Actualizar:
Los elementos dentro del contenido div
también tendrán alturas establecidas en porcentajes. Entonces, algo al 100% dentro div
lo 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 #content
ocuparía el 40% del espacio de la pantalla. Hasta ahora, envolver todo en una tabla es lo único que funciona.
display:table
propiedades relacionadas, consulte esta respuesta a una pregunta muy similar.