Ich möchte nur hinzufügen - die meisten anderen Antworten haben für mich gut funktioniert. Es hat jedoch lange gedauert, bis sie funktionierten!
Dies liegt daran, dass beim Einstellen height: 100%
nur die Größe des übergeordneten Divs erfasst wird!
Also, wenn Ihr gesamtes HTML (innerhalb des Körpers) wie folgt aussieht:
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
Dann ist folgendes in Ordnung:
html,body{
height: 100%
}
#holder{
min-height: 100%;
position:relative;
}
#body{
padding-bottom: 100px; /* height of footer */
}
footer{
height: 100px;
width:100%;
position: absolute;
left: 0;
bottom: 0;
}
... da "Inhaber" seine Höhe direkt vom "Körper" aufnimmt.
Ein großes Lob an meinen Kopf tut weh, dessen Antwort die war, die ich zur Arbeit gebracht habe!
Jedoch. Wenn Ihr HTML-Code stärker verschachtelt ist (weil es nur ein Element der gesamten Seite ist oder sich in einer bestimmten Spalte befindet usw.), müssen Sie sicherstellen, dass jedes enthaltende Element auch height: 100%
für div festgelegt wurde. Andernfalls gehen die Angaben zur Höhe zwischen "Körper" und "Halter" verloren.
Zum Beispiel das Folgende, wo ich jedem Div die Klasse "volle Höhe" hinzugefügt habe, um sicherzustellen, dass die Höhe bis zu unseren Kopf- / Körper- / Fußzeilenelementen reicht:
<div class="full-height">
<div class="container full-height">
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
</div>
</div>
Und denken Sie daran, die Höhe für die Klasse mit voller Höhe im CSS festzulegen:
#full-height{
height: 100%;
}
Das hat meine Probleme behoben!
position:fixed
, obwohl das nicht gerade der beste Weg ist, es zu tun