Chú thích chân với display: flex
Giải pháp lấy cảm hứng từ chân trang dính của Philip Walton .
Giải trình
Giải pháp này chỉ hợp lệ cho :
- Chrome ≥ 21.0
- Firefox 20.0
- Internet Explorer 10
- Safari ≥ 6.1
Nó dựa trên flex
màn hình , tận dụng thuộc flex-grow
tính, cho phép một phần tử tăng theo chiều cao hoặc chiều rộng (khi flow-direction
được đặt thành một column
hoặc row
tương ứng), để chiếm không gian thừa trong vùng chứa.
Chúng tôi cũng sẽ tận dụng vh
đơn vị, nơi 1vh
được định nghĩa là :
1/100 chiều cao của khung nhìn
Do đó, chiều cao của 100vh
nó là một cách ngắn gọn để nói cho một phần tử trải dài toàn bộ chiều cao của khung nhìn.
Đây là cách bạn sẽ cấu trúc trang web của mình:
----------- body -----------
----------------------------
---------- footer ----------
----------------------------
Để có phần chân trang nằm ở cuối trang, bạn muốn khoảng trống giữa phần thân và phần chân trang sẽ phát triển hết mức cần thiết để đẩy phần chân trang ở cuối trang.
Do đó, bố cục của chúng tôi trở thành:
----------- body -----------
----------------------------
---------- spacer ----------
<- This element must grow in height
----------------------------
---------- footer ----------
----------------------------
Thực hiện
body {
margin: 0;
display: flex;
flex-direction: column;
min-height: 100vh;
}
.spacer {
flex: 1;
}
/* make it visible for the purposes of demo */
.footer {
height: 50px;
background-color: red;
}
<body>
<div class="content">Hello World!</div>
<div class="spacer"></div>
<footer class="footer"></footer>
</body>
Bạn có thể chơi với nó tại JSFiddle .
Quirks Safari
Xin lưu ý rằng Safari có một triển khai flex-shrink
bất động sản hoàn hảo , cho phép các mục thu nhỏ hơn chiều cao tối thiểu sẽ được yêu cầu để hiển thị nội dung. Để khắc phục sự cố này, bạn sẽ phải đặt thuộc flex-shrink
tính rõ ràng thành 0 thành .content
và footer
trong ví dụ trên:
.content { flex-shrink: 0; }
.footer { flex-shrink: 0; }