Tôi đang sử dụng cách sau: Bố cục CSS - chiều cao 100%
Chiều cao tối thiểu
Phần tử #container của trang này có chiều cao tối thiểu 100%. Theo cách đó, nếu nội dung yêu cầu nhiều chiều cao hơn chế độ xem cung cấp, chiều cao của #content buộc #container cũng trở nên dài hơn. Các cột có thể có trong #content sau đó có thể được hiển thị bằng hình ảnh nền trên #container; div không phải là ô bảng và bạn không cần (hoặc muốn) các yếu tố vật lý để tạo hiệu ứng hình ảnh như vậy. Nếu bạn chưa bị thuyết phục; nghĩ các đường uốn lượn và độ dốc thay vì các đường thẳng và cách phối màu đơn giản.
Định vị tương đối
Vì #container có vị trí tương đối, #footer sẽ luôn duy trì ở cuối; vì chiều cao tối thiểu được đề cập ở trên không ngăn #container mở rộng, điều này sẽ hoạt động ngay cả khi (hoặc đặc biệt là khi) #content buộc #container trở nên dài hơn.
Đệm đáy
Vì nó không còn trong luồng thông thường, phần đệm dưới của #content hiện cung cấp không gian cho #footer tuyệt đối. Phần đệm này được bao gồm trong chiều cao cuộn theo mặc định, do đó phần chân trang sẽ không bao giờ chồng lấp nội dung trên.
Thu nhỏ kích thước văn bản một chút hoặc thay đổi kích thước cửa sổ trình duyệt của bạn để kiểm tra bố cục này.
html,body {
margin:0;
padding:0;
height:100%; /* needed for container min-height */
background:gray;
font-family:arial,sans-serif;
font-size:small;
color:#666;
}
h1 {
font:1.5em georgia,serif;
margin:0.5em 0;
}
h2 {
font:1.25em georgia,serif;
margin:0 0 0.5em;
}
h1, h2, a {
color:orange;
}
p {
line-height:1.5;
margin:0 0 1em;
}
div#container {
position:relative; /* needed for footer positioning*/
margin:0 auto; /* center, not in IE5 */
width:750px;
background:#f0f0f0;
height:auto !important; /* real browsers */
height:100%; /* IE6: treaded as min-height*/
min-height:100%; /* real browsers */
}
div#header {
padding:1em;
background:#ddd url("../csslayout.gif") 98% 10px no-repeat;
border-bottom:6px double gray;
}
div#header p {
font-style:italic;
font-size:1.1em;
margin:0;
}
div#content {
padding:1em 1em 5em; /* bottom padding for footer */
}
div#content p {
text-align:justify;
padding:0 1em;
}
div#footer {
position:absolute;
width:100%;
bottom:0; /* stick to bottom */
background:#ddd;
border-top:6px double gray;
}
div#footer p {
padding:1em;
margin:0;
}
Hoạt động tốt cho tôi.
min-height: 100vh;
. Cái này đặt chiều cao bằng hoặc lớn hơn kích thước của màn hình ,vh: vertical height
. Để biết thêm: w3schools.com/cssref/css_units.asp .