2012-02-03 28 views

Trả lời

25

2014 CẬP NHẬT: Cách hiện đại để giải quyết vấn đề bố trí này là để use the flexbox CSS model. Nó được hỗ trợ bởi tất cả các trình duyệt chính và IE11 +.


Dưới đây là một giải pháp cho chân dính cao linh hoạt sử dụng div s với display: table-row:

html, body { 
 
    height: 100%; 
 
    margin: 0; 
 
} 
 
.wrapper { 
 
    display: table; 
 
    height: 100%; 
 
    width: 100%; 
 
    background: yellow; 
 
} 
 
.content { 
 
    display: table-row; 
 
    /* height is dynamic, and will expand... */ 
 
    height: 100%; 
 
    /* ...as content is added (won't scroll) */ 
 
    background: turquoise; 
 
} 
 
.footer { 
 
    display: table-row; 
 
    background: lightgray; 
 
}
<div class="wrapper"> 
 
    <div class="content"> 
 
    <h2>Content</h2> 
 
    </div> 
 
    <div class="footer"> 
 
    <h3>Sticky footer</h3> 
 
    <p>Footer of variable height</p> 
 
    </div> 
 
</div>

Những gì cần phải được lưu ý là CSS được thiết kế để bố trí tài liệu , không phải màn hình ứng dụng web. Hiển thị CSS: thuộc tính bảng rất hợp lệ và được hỗ trợ trong all major browsers. Điều này không giống như việc sử dụng cấu trúc bảng để bố cục.

+1

+1, điều này thực sự tuyệt vời. Bạn có biết bất kỳ hạn chế nào đối với phương pháp này không? Làm thế nào để bạn nghĩ rằng nó sẽ giữ trên điện thoại di động? –

+1

Điều này thật tuyệt vời - cảm ơn bạn! Nó không hoàn toàn phù hợp với nhu cầu của tôi, tuy nhiên, đó là cho một footer dính chiều cao biến và một khu vực nội dung * sẽ * cuộn. Tôi phát hiện ra rằng tôi có thể làm điều đó bằng cách bỏ qua "display: table-row" trên nội dung và thiết lập "overflow-y: scroll". Trên footer, sau đó tôi đổi nó thành "display: table-footer-group". Điều này đã khiến mọi thứ hoạt động chính xác như mong muốn! – nkoren

+1

Bạn nên thêm 'bảng bố trí: cố định;' vào lớp bọc. Nếu không có tôi đã có một số vấn đề chiều rộng trong IE. Nội dung bị tràn bất kể chiều rộng tối đa. –

0

Tôi nghĩ tôi hiểu bạn là gì.

Bạn cần phải loại bỏ chiều cao css và thay thế bằng padding-top và bottom đệm nếu bạn vẫn còn cái khoảng cách ..

Đối với ví dụ

#footer { 
    position: absolute; 
    bottom: 0; 
    width: 100%; 
    background: #6CF; 
    padding-top: 20px; 
    padding-bottom: 20px; 
} 
+0

sẽ kiểm tra xem, cảm ơn – diegoiglesias

+0

Nếu công trình này, bạn có thể đánh dấu bài đăng của tôi là anwsers. Cảm ơn bạn –

-1
#wrapper, #content, #footer { 
    width:100%; 
    height:100%; 
    position: relative; 
} 


<div id="wrapper"> 
    <div id="content"></div> 
    <div id="footer"></div> 
</div> 
+0

... không tạo chân trang có chiều cao thay đổi, nhưng chia tỷ lệ này thành 100% diện tích của chế độ xem. – HumanInDisguise

Các vấn đề liên quan