Je travaille sur une application web où je souhaite que le contenu remplisse la hauteur de tout l'écran.
La page a un en-tête, qui contient un logo et des informations de compte. Cela pourrait être une hauteur arbitraire. Je veux que la div de contenu remplisse le reste de la page vers le bas.
J'ai un en-tête div
et un contenu div
. En ce moment j'utilise un tableau pour la mise en page comme ceci:
CSS et 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>
La hauteur entière de la page est remplie et aucun défilement n'est requis.
Pour tout ce qui se trouve à l'intérieur de la division de contenu, le paramètre le top: 0;
placera juste sous l'en-tête. Parfois, le contenu sera une vraie table, avec sa hauteur réglée à 100%. Mettre à l' header
intérieur content
ne permettra pas que cela fonctionne.
Existe-t-il un moyen d'obtenir le même effet sans utiliser le table
?
Mise à jour:
Les éléments à l'intérieur du contenu div
auront également des hauteurs définies en pourcentages. Donc, quelque chose à 100% à l'intérieur le div
remplira jusqu'au fond. De même que deux éléments à 50%.
Mise à jour 2:
Par exemple, si l'en-tête occupe 20% de la hauteur de l'écran, une table spécifiée à 50% à l'intérieur #content
occuperait 40% de l'espace d'écran. Jusqu'à présent, envelopper le tout dans une table est la seule chose qui fonctionne.
display:table
les propriétés associées, voir cette réponse à une question très similaire.