Saya hanya ingin menambahkan - sebagian besar jawaban lain bekerja dengan baik untuk saya; namun, butuh waktu lama untuk membuatnya bekerja!
Ini karena pengaturan height: 100%
hanya mengambil tinggi div orangtua!
Jadi jika seluruh html Anda (di dalam tubuh) terlihat seperti berikut:
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
Maka yang berikut ini akan baik-baik saja:
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;
}
... sebagai "pemegang" akan mengambil tinggi itu langsung dari "tubuh".
Kudos to My Head Hurts, yang jawabannya adalah aku akhirnya mulai bekerja!
Namun. Jika html Anda lebih bersarang (karena itu hanya elemen dari halaman penuh, atau itu dalam kolom tertentu, dll) maka Anda perlu memastikan setiap elemen yang mengandung juga telah height: 100%
ditetapkan pada div. Kalau tidak, informasi tentang ketinggian akan hilang antara "tubuh" dan "pemegang".
Misalnya yang berikut, di mana saya telah menambahkan kelas "tinggi penuh" ke setiap div untuk memastikan ketinggiannya turun ke elemen header / body / footer kami:
<div class="full-height">
<div class="container full-height">
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
</div>
</div>
Dan ingat untuk mengatur ketinggian pada kelas tinggi penuh di css:
#full-height{
height: 100%;
}
Itu memperbaiki masalah saya!
position:fixed
, meskipun itu tidak akan persis cara terbaik untuk melakukannya