Chcę, aby ciało miało 100% wysokości przeglądarki. Czy mogę to zrobić za pomocą CSS?
Próbowałem ustawienie height: 100%
, ale to nie działa.
Chcę ustawić kolor tła strony, aby wypełnić całe okno przeglądarki, ale jeśli strona ma mało treści, na dole pojawia się brzydki biały pasek.
Odpowiedzi:
Spróbuj również ustawić wysokość elementu HTML na 100%.
Ciało oczekuje od swojego rodzica (HTML) sposobu skalowania właściwości dynamicznej, więc element HTML musi mieć również ustawioną wysokość.
Jednak zawartość ciała prawdopodobnie będzie musiała zmieniać się dynamicznie. Ustawienie minimalnej wysokości na 100% pozwoli osiągnąć ten cel.
źródło
body {min-height}
wersji, nie możesz użyć.body-child{height: 100%}
sztuczki.vh
->body { height: 100vh }
- sprawdź odpowiedź tutaj stackoverflow.com/a/25829844/2680216Jako alternatywę dla ustawienia zarówno wysokości elementu, jak
html
ibody
elementu100%
, można również użyć procentowej długości rzutni.W tym przypadku możesz użyć wartości
100vh
- która jest wysokością rzutni.Przykład tutaj
Jest to obsługiwane w większości nowoczesnych przeglądarek - pomoc można znaleźć tutaj .
źródło
margin: 0;
aby uniknąć stałego pionowego paska przewijania po prawej stronie.Jeśli masz obraz tła, ustaw go w zamian:
Zapewnia to, że znacznik body może nadal rosnąć, gdy zawartość jest wyższa niż rzutnia, a obraz tła będzie się powtarzał / przewijał / cokolwiek, gdy zaczniesz przewijać w dół.
Pamiętaj, że jeśli musisz wspierać IE6, musisz znaleźć sposób, aby wcisnąć się w
height:100%
ciało, IE6 iheight
tak traktujemin-height
tak.źródło
body{min-height: 100vh}
body { height: auto; }
nie wyświetlać pasków przewijania w FireFox. poza tym działa idealnie.Jeśli chcesz zachować marginesy na ciele i nie chcesz pasków przewijania, użyj następującego css:
Ustawienie
body {min-height:100%}
daje paski przewijania.Zobacz demo na http://jsbin.com/aCaDahEK/2/edit?html,output .
źródło
height: auto;
wbody
klauzuli, aby pojawiały się paski przewijania.źródło
Po przetestowaniu różnych scenariuszy uważam, że jest to najlepsze rozwiązanie:
Jest dynamiczny, że
html
i tebody
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 .
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ą.
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.
źródło
height: 100vh
nie jest rozwiązanie. Ustawienie górnego kontenera na100vh
wysoki i100vw
może powodować problemy, jeśli kontener ma paski przewijania - wówczas będzie większy niż powinien (i może powodować, że paski przewijania będą niepotrzebnie widoczne). Teheight: 100vh
również źródłem problemów dla nas na nowszych urządzeniach z Androidem (np Xiaomi Mi 9 z Androidem 9), gdzie pojemnik byłby większy niż samego ekranu i może sprawić niepotrzebny pionowy pasek przewijania do treści dokumentu.To, czego używam na początku dosłownie każdego pliku CSS, którego używam, to:
Margines 0 zapewnia, że elementy HTML i BODY nie są automatycznie pozycjonowane przez przeglądarkę, aby mieć trochę miejsca po ich lewej lub prawej stronie.
Dopełnienie 0 zapewnia, że elementy HTML i BODY nie popychają automatycznie wszystkiego wewnątrz lub w dół z powodu domyślnych ustawień przeglądarki.
Warianty szerokości i wysokości są ustawione na 100%, aby zapewnić, że przeglądarka nie zmieni ich rozmiaru w oczekiwaniu na automatyczne ustawienie marginesu lub wypełnienia, z ustawieniem wartości minimalnej i maksymalnej na wypadek, gdyby zdarzyły się jakieś dziwne, niewytłumaczalne rzeczy, chociaż ty prawdopodobnie ich nie potrzebuję.
Takie rozwiązanie oznacza również, że podobnie jak ja, kiedy zaczynałem na HTML i CSS kilka lat temu, nie będziesz musiał podać swoje pierwsze
<div>
Amargin:-8px;
, aby zmieścić się w rogu okna przeglądarki.Zanim opublikowałem, spojrzałem na mój inny pełnoekranowy projekt CSS i stwierdziłem, że wszystko, czego tam użyłem, było tylko
body{margin:0;}
i nic więcej, co działało dobrze przez 2 lata, nad którymi pracowałem.Mam nadzieję, że ta szczegółowa odpowiedź pomoże i czuję twój ból. Moim zdaniem głupotą jest to, że przeglądarki powinny ustawić niewidoczną granicę po lewej, a czasem w górnej części elementów body / html.
źródło
width: 100%
body i HTML? Tak, rozumiem, że z praktycznego punktu widzeniabody { margin: 0; }
powinno wystarczyć w większości przypadków. Chcę tylko dokładniej zrozumieć.Szybka aktualizacja
Lepsze rozwiązanie dzięki dzisiejszemu CSS
źródło
overflow: auto
tutaj zrób magię. Przy okazji korzystam z Chrome.Tutaj:
źródło
W razie potrzeby możesz także użyć JS
źródło
Próbować
źródło
width: 100%
body i HTML? Tak, rozumiem, że z praktycznego punktu widzeniabody { margin: 0; }
powinno wystarczyć w większości przypadków. Chcę tylko dokładniej zrozumieć.Proszę to sprawdzić:
Lub wypróbuj nową metodę Wysokość rzutni:
Rzutnia: jeśli korzystanie z rzutni oznacza, że zawartość ekranu o dowolnej wielkości osiągnie pełną wysokość ekranu.
źródło
width: 100%
body i HTML?Jeśli nie chcesz pracować nad edycją własnego pliku CSS i samodzielnie definiować reguły wysokości, najbardziej typowe frameworki CSS rozwiązują również ten problem z elementem treści wypełniającym całą stronę, między innymi z łatwością z wieloma rozmiary rzutni.
Na przykład środowisko Tacit CSS rozwiązuje ten problem po wyjęciu z pudełka, w którym nie trzeba definiować żadnych reguł i klas CSS, a jedynie umieszcza się plik CSS w kodzie HTML.
źródło
Działa dla wszystkich głównych przeglądarek: FF, Chrome, Opera, IE9 +. Współpracuje z obrazami tła i gradientami. Paski przewijania są dostępne w zależności od potrzeb.
źródło
Użyłbym tego
Przeglądarka będzie korzystać,
min-height: 100vh
a jeśli w jakiś sposób będzie nieco starsza,min-height: 100%
nastąpi awaria.Jest
overflow: auto
to konieczne, jeśli chcesz, aby treść i HTML zwiększały swoją wysokość po zmianie rozmiaru ekranu (na przykład do rozmiaru telefonu komórkowego)źródło
Tylko z 1 linią CSS… Możesz to zrobić.
źródło
100vh
to rzeczywiście nie to, czego się spodziewać na iOS Safari.wszystkie odpowiedzi są w 100% poprawne i dobrze wyjaśnione, ale zrobiłem coś dobrego i bardzo prostego, aby było responsywne.
tutaj element zajmie 100% wysokości portu widoku, ale jeśli chodzi o widok mobilny, nie wygląda dobrze specjalnie w widoku pionowym (mobilnym), więc gdy port widoku jest coraz mniejszy, element zwinie się i zachodzi na siebie. więc aby nie reagować tutaj, jest kod. mam nadzieję, że ktoś otrzyma od tego pomoc.
oto JSfiddle Demo.
źródło
Tutaj aktualizacja
źródło
O dodatkowej przestrzeni na dole: czy twoja strona jest aplikacją ASP.NET? Jeśli tak, prawdopodobnie znacznik zawiera prawie wszystko. Nie zapomnij też stylizować formularza. Dodanie
overflow:hidden;
do formularza może usunąć dodatkową spację na dole.źródło
źródło
width: 100%
body i HTML? Tak, rozumiem, że z praktycznego punktu widzeniabody { margin: 0; }
powinno wystarczyć w większości przypadków. Chcę tylko dokładniej zrozumieć.CSS3 ma nową metodę.
Dzięki temu ViewPort jest w 100% równy wysokości.
Twój kod powinien być
źródło