Tôi chỉ muốn thêm - hầu hết các câu trả lời khác đều hoạt động tốt với tôi; tuy nhiên, phải mất một thời gian dài để chúng hoạt động!
Điều này là do cài đặt height: 100%
chỉ lấy chiều cao của cha mẹ!
Vì vậy, nếu toàn bộ html của bạn (bên trong cơ thể) trông như sau:
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
Sau đó sẽ ổn thôi:
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;
}
... vì "người giữ" sẽ lấy chiều cao của nó trực tiếp từ "cơ thể".
Kudos to My Head Hurts, người có câu trả lời là người cuối cùng tôi đi làm!
Tuy nhiên. Nếu html của bạn được lồng nhiều hơn (vì nó chỉ là một thành phần của trang đầy đủ hoặc trong một cột nhất định, v.v.) thì bạn cần đảm bảo rằng mọi thành phần có chứa cũng đã height: 100%
được đặt trên div. Nếu không, thông tin về chiều cao sẽ bị mất giữa "cơ thể" và "người giữ".
Ví dụ như sau, trong đó tôi đã thêm lớp "chiều cao đầy đủ" cho mỗi div để đảm bảo chiều cao giảm xuống các yếu tố tiêu đề / cơ thể / chân trang của chúng tôi:
<div class="full-height">
<div class="container full-height">
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
</div>
</div>
Và nhớ đặt chiều cao cho lớp toàn chiều cao trong css:
#full-height{
height: 100%;
}
Điều đó đã khắc phục vấn đề của tôi!
position:fixed
, mặc dù đó sẽ không phải là cách tốt nhất để làm điều đó