Po przetestowaniu różnych scenariuszy uważam, że jest to najlepsze rozwiązanie:
html {
width: 100%;
height: 100%;
display: table;
}
body {
width: 100%;
display: table-cell;
}
html, body {
margin: 0px;
padding: 0px;
}
Jest dynamiczny, że html
i te body
elementy będą rozwijać się automatycznie, jeśli ich zawartość przepełnienie. Przetestowałem to w najnowszej wersji przeglądarki Firefox, Chrome i IE 11.
Zobacz pełne skrzypce tutaj (dla hejterów przy stole, zawsze możesz go zmienić, aby użyć div):
https://jsfiddle.net/71yp4rh1/9/
Biorąc to pod uwagę, istnieje kilka problemów z zamieszczonymi tutaj odpowiedziami .
html, body {
height: 100%;
}
Użycie powyższego CSS spowoduje, że HTML i element body NIE zostaną automatycznie rozwinięte, jeśli ich zawartość przepełni się, jak pokazano tutaj:
https://jsfiddle.net/9vyy620m/4/
Podczas przewijania zauważ powtarzające się tło? Dzieje się tak, ponieważ wysokość elementu ciała NIE wzrosła z powodu przepełnienia stołu podrzędnego. Dlaczego nie rozwija się jak każdy inny element bloku? Nie jestem pewny. Myślę, że przeglądarki niepoprawnie sobie z tym radzą.
html {
height: 100%;
}
body {
min-height: 100%;
}
Ustawienie minimalnej wysokości 100% na ciele, jak pokazano powyżej, powoduje inne problemy. Jeśli to zrobisz, nie możesz określić, że div dziecka lub tabela zajmują procentową wysokość, jak pokazano tutaj:
https://jsfiddle.net/aq74v2v7/4/
Mam nadzieję, że to komuś pomoże. Myślę, że przeglądarki niepoprawnie sobie z tym radzą. Spodziewałbym się, że wysokość ciała automatycznie dostosuje się do wzrostu, jeśli jego dzieci przepełnią się. Nie wydaje się to jednak, gdy używasz 100% wysokości i 100% szerokości.