Estou trabalhando em um aplicativo da web em que desejo que o conteúdo preencha a altura da tela inteira.
A página tem um cabeçalho, que contém um logotipo e informações da conta. Essa pode ser uma altura arbitrária. Quero que a div de conteúdo preencha o restante da página até o final.
Eu tenho um cabeçalho div
e um conteúdo div
. No momento, estou usando uma tabela para o layout da seguinte forma:
CSS e 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>
Toda a altura da página é preenchida e nenhuma rolagem é necessária.
Para qualquer coisa dentro da div de conteúdo, a configuração top: 0;
a colocará logo abaixo do cabeçalho. Às vezes, o conteúdo será uma tabela real, com sua altura definida para 100%. Colocar header
dentro content
não permitirá que isso funcione.
Existe uma maneira de obter o mesmo efeito sem usar o table
?
Atualizar:
Os elementos dentro do conteúdo div
também terão alturas definidas para porcentagens. Então, algo a 100% dentro do div
preenchê-lo-á até o fundo. Assim como dois elementos a 50%.
Atualização 2:
Por exemplo, se o cabeçalho #content
ocupar 20% da altura da tela, uma tabela especificada a 50% dentro ocuparia 40% do espaço da tela. Até agora, envolver a coisa toda em uma tabela é a única coisa que funciona.
display:table
propriedades e relacionadas, consulte esta resposta para uma pergunta muito semelhante.