Ich arbeite an einer Webanwendung, bei der der Inhalt die Höhe des gesamten Bildschirms ausfüllen soll.
Die Seite hat eine Kopfzeile, die ein Logo und Kontoinformationen enthält. Dies kann eine beliebige Höhe sein. Ich möchte, dass der Inhaltsbereich den Rest der Seite bis zum Ende ausfüllt.
Ich habe einen Header div
und einen Inhalt div
. Im Moment verwende ich eine Tabelle für das Layout wie folgt:
CSS und 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>
Die gesamte Höhe der Seite ist gefüllt und es ist kein Bildlauf erforderlich.
Für alles innerhalb des Inhaltsbereichs top: 0;
wird es durch die Einstellung direkt unter der Kopfzeile platziert. Manchmal ist der Inhalt eine echte Tabelle, deren Höhe auf 100% eingestellt ist. Wenn Sie header
hineinstecken content
, funktioniert dies nicht.
Gibt es eine Möglichkeit, den gleichen Effekt zu erzielen, ohne das zu verwenden table
?
Aktualisieren:
Bei Elementen innerhalb des Inhalts div
werden die Höhen ebenfalls auf Prozentsätze festgelegt. Also etwas zu 100% in derdiv
füllt es also bis zum Boden. Wie zwei Elemente bei 50%.
Update 2:
Wenn der Header beispielsweise 20% der Bildschirmhöhe einnimmt, nimmt eine mit 50% angegebene Tabelle #content
40% des Bildschirmplatzes ein. Bisher funktioniert nur das Einwickeln der gesamten Sache in eine Tabelle.
display:table
und verwandte Eigenschaften verwenden. Diese Antwort auf eine sehr ähnliche Frage finden Sie in dieser Antwort .