Sau khi thử nghiệm các kịch bản khác nhau, tôi tin rằng đây là giải pháp tốt nhất:
html {
width: 100%;
height: 100%;
display: table;
}
body {
width: 100%;
display: table-cell;
}
html, body {
margin: 0px;
padding: 0px;
}
Đó là động ở chỗ html
và các body
yếu tố sẽ tự động mở rộng nếu nội dung của chúng tràn ra. Tôi đã thử nghiệm điều này trong phiên bản Firefox, Chrome và IE 11 mới nhất.
Xem toàn bộ câu đố ở đây (đối với những người ghét bảng ngoài kia, bạn luôn có thể thay đổi nó để sử dụng div):
https://jsfiddle.net/71yp4rh1/9/
Với điều đó đang được nói, có một số vấn đề với câu trả lời được đăng ở đây .
html, body {
height: 100%;
}
Sử dụng CSS ở trên sẽ khiến html và phần tử body KHÔNG tự động mở rộng nếu nội dung của chúng bị tràn như hiển thị ở đây:
https://jsfiddle.net/9vyy620m/4/
Khi bạn cuộn, chú ý nền lặp lại? Điều này xảy ra vì chiều cao của phần tử cơ thể KHÔNG tăng do bảng con của nó bị tràn. Tại sao nó không mở rộng như bất kỳ yếu tố khối nào khác? Tôi không chắc. Tôi nghĩ rằng các trình duyệt xử lý điều này không chính xác.
html {
height: 100%;
}
body {
min-height: 100%;
}
Đặt chiều cao tối thiểu 100% trên cơ thể như hình trên gây ra các vấn đề khác. Nếu bạn làm điều này, bạn không thể chỉ định rằng một div con hoặc bảng chiếm một phần trăm chiều cao như được hiển thị ở đây:
https://jsfiddle.net/aq74v2v7/4/
Hy vọng điều này sẽ giúp được ai đó. Tôi nghĩ rằng các trình duyệt đang xử lý điều này không chính xác. Tôi hy vọng chiều cao của cơ thể sẽ tự động điều chỉnh ngày càng lớn hơn nếu trẻ em của nó tràn ra. Tuy nhiên, điều đó dường như không xảy ra khi bạn sử dụng 100% chiều cao và 100% chiều rộng.