Đây là một giải pháp mà không đòi hỏi rằng các chân được đặt bên ngoài của phần tử wrapper chính, đó là cách hầu hết mọi người cấu trúc trang của họ.
html,
body {
margin: 0;
height: 100%;
}
.wrapper {
box-sizing: border-box;
position: relative;
padding-bottom: 1em; /* Height of footer */
min-height: 100%;
}
header {
background-color: #cff;
}
footer {
position: absolute;
bottom: 0;
width: 100%;
color: #fff;
background-color: #000;
}
<div class="wrapper">
<header>I am the header.</header>
<article>I am content that doesn't fill the page. The footer will appear at the bottom of the browser window. However, when I do fill the page, you will need to scroll down to see the footer.</article>
<footer>I am the footer.</footer>
</div>
Giải thích
Yếu tố wrapper sẽ lấp đầy 100% chiều cao khung nhìn. (Bạn cũng có thể sử dụng 100vh cho trình bao bọc nếu bạn không muốn đặt chiều cao của phần tử html và phần thân.) Trình bao bọc cũng có phần đệm bên dưới để tạo trình giữ chỗ cho chân trang để ngồi.
Chân trang được đặt hoàn toàn ở cuối trình bao bọc và nằm trong trình giữ chỗ được tạo bởi phần đệm đáy của trình bao bọc.
Điều này có nghĩa là khi trang không có thanh cuộn, chân trang sẽ được đặt ở dưới cùng. Tuy nhiên, khi có đủ nội dung cho thanh cuộn xuất hiện, chân trang sẽ được đẩy xuống dưới nội dung.
Nguồn
2017-11-09 19:32:17
Xem câu trả lời của tôi tại đây: https://stackoverflow.com/questions/15960290/css-footer-not-displaying-at-the-bottom-of-the-page/48286159#48286159 – CodyBugstein