Chcę tylko dodać - większość pozostałych odpowiedzi działała dla mnie dobrze; zajęło im jednak dużo czasu!
Jest tak, ponieważ ustawienie height: 100%
podnosi tylko wysokość div rodzica!
Więc jeśli cały HTML (wewnątrz ciała) wygląda następująco:
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
Wtedy następujące będą w porządku:
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;
}
... ponieważ „uchwyt” podnosi wysokość bezpośrednio z „ciała”.
Uznanie dla mojej głowy boli, której odpowiedzią była ta, w której znalazłem się w pracy!
Jednak. Jeśli twój HTML jest bardziej zagnieżdżony (ponieważ jest to tylko element całej strony lub jest w określonej kolumnie itp.), Musisz upewnić się, że każdy element zawieraheight: 100%
ustawiony element div. W przeciwnym razie informacje o wysokości zostaną utracone między „ciałem” a „uchwytem”.
Np. Poniższe, w którym dodałem klasę „pełnej wysokości” do każdego elementu div, aby upewnić się, że wysokość sięga aż do naszych elementów nagłówka / treści / stopki:
<div class="full-height">
<div class="container full-height">
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
</div>
</div>
I pamiętaj, aby ustawić wysokość w klasie pełnej wysokości w css:
#full-height{
height: 100%;
}
To naprawiło moje problemy!
position:fixed
, choć nie będzie to najlepszy sposób