Tôi đang làm việc trên một ứng dụng web nơi tôi muốn nội dung lấp đầy chiều cao của toàn bộ màn hình.
Trang này có một tiêu đề, chứa logo và thông tin tài khoản. Đây có thể là một chiều cao tùy ý. Tôi muốn div nội dung điền phần còn lại của trang xuống dưới cùng.
Tôi có một tiêu đề div
và một nội dung div
. Hiện tại tôi đang sử dụng một bảng để bố trí như vậy:
CSS và HTML
#page {
height: 100%; width: 100%
}
#tdcontent {
height: 100%;
}
#content {
overflow: auto; /* or overflow: hidden; */
}
<table id="page">
<tr>
<td id="tdheader">
<div id="header">...</div>
</td>
</tr>
<tr>
<td id="tdcontent">
<div id="content">...</div>
</td>
</tr>
</table>
Toàn bộ chiều cao của trang được lấp đầy và không cần cuộn.
Đối với mọi thứ bên trong div nội dung, cài đặt top: 0;
sẽ đặt nó ngay bên dưới tiêu đề. Đôi khi nội dung sẽ là một bảng thực, với chiều cao được đặt thành 100%. Đưa header
vào bên trong content
sẽ không cho phép điều này làm việc.
Có cách nào để đạt được hiệu quả tương tự mà không cần sử dụng table
không?
Cập nhật:
Các yếu tố bên trong nội dung div
cũng sẽ có chiều cao được đặt thành tỷ lệ phần trăm. Vì vậy, một cái gì đó ở 100% bên trong div
sẽ điền nó vào dưới cùng. Như hai yếu tố sẽ ở mức 50%.
Cập nhật 2:
Chẳng hạn, nếu tiêu đề chiếm 20% chiều cao của màn hình, một bảng được chỉ định ở mức 50% bên trong #content
sẽ chiếm 40% không gian màn hình. Cho đến nay, bọc toàn bộ thứ trong một cái bàn là thứ duy nhất hoạt động.
display:table
và các thuộc tính liên quan, xem câu trả lời này cho một câu hỏi rất giống nhau.