Mam układ z dwiema kolumnami - lewą div
i prawą div
.
Prawa strona div
ma kolor szary background-color
i muszę ją rozwinąć w pionie w zależności od wysokości okna przeglądarki użytkownika. W tej chwili background-color
kończy się na tym ostatni fragment treści div
.
Próbowałem height:100%
, min-height:100%;
itp
height
właściwości CSS z wartościami procentowymi: stackoverflow.com/a/31728799/3597276Odpowiedzi:
Istnieje kilka jednostek miar CSS 3 o nazwie:
Długości procentowe (lub względne)
Jakie są długości procentowe rzutni?
Z powiązanej rekomendacji dla kandydatów W3 powyżej:
Jednostkami tymi są
vh
(wysokość rzutni),vw
(szerokość rzutni),vmin
(minimalna długość rzutni) ivmax
(maksymalna długość rzutni).Jak można tego użyć, aby dzielnik wypełniał wysokość przeglądarki?
Do tego pytania możemy użyć
vh
:1vh
jest równe 1% wysokości rzutni. Oznacza to, że100vh
jest równa wysokości okna przeglądarki, niezależnie od tego, gdzie element znajduje się w drzewie DOM:HTML
CSS
To dosłownie wszystko, czego potrzeba. Oto przykład tego używanego JSFiddle .
Jakie przeglądarki obsługują te nowe urządzenia?
Jest to obecnie obsługiwane we wszystkich aktualnych głównych przeglądarkach oprócz Opery Mini. Sprawdź Czy mogę użyć ... w celu uzyskania dalszej pomocy.
Jak można tego używać z wieloma kolumnami?
W przypadku pytania, które zawiera lewy i prawy rozdzielacz, oto przykład JSFiddle pokazujący układ dwóch kolumn obejmujący oba
vh
ivw
.Czym się
100vh
różni100%
?Weźmy na przykład ten układ:
p
Znacznik tutaj jako 100% wzrostu, ale ponieważ jest zawierającediv
ma wysokość pikseli 200, 100% 200 200 pikseli, pikseli, staje się nie 100% wbody
wysokości. Użycie100vh
zamiast tego oznacza, żep
znacznik będzie miał 100% wysokościbody
niezależnie oddiv
wysokości. Spójrz na towarzyszący JSFiddle, aby łatwo zobaczyć różnicę!źródło
min-height:100vh
wydaje się, że to działa.Jeśli chcesz ustawić wysokość elementu
<div>
lub dowolnego elementu, powinieneś również ustawić wysokość<body>
i<html>
na 100%. Następnie możesz ustawić wysokość elementu za pomocą 100% :)Oto przykład:
źródło
html { height: 100%*number of blocks; }
,body { height: 100%;}
,#div { height: 100%/number of blocks; }
. Więc jeśli masz 3 sekcje, będzie tohtml { height: 300%; } body { height: 100%; } #div { height: 33.3% }
Jeśli jesteś w stanie absolutnie ustawić swoje elementy,
zrobiłbym to.
źródło
position:relative
a jego wysokość nie stanowi 100% rzutni. Dopasuje górę i dół do następnego względnego lub absolutnego przodka.Możesz użyć jednostki portu widoku w CSS:
HTML:
CSS:
źródło
* { box-sizing: border-box; }
aby temu zapobiec.W
vh
tym przypadku możesz użyć wartości odpowiadającej 1% wysokości rzutni ...Oznacza to, że jeśli chcesz zasłonić wysokość, po prostu użyj
100vh
.Spójrz na zdjęcie poniżej, które tutaj rysuję:
Wypróbuj fragment, który dla Ciebie stworzyłem, jak poniżej:
źródło
paddings/margins
Wszystkie pozostałe rozwiązania, w tym jedno z najczęściej wybieranych,
vh
są nieoptymalne w porównaniu z rozwiązaniem modelu elastycznego .Wraz z pojawieniem się modelu elastycznego CSS , rozwiązanie problemu 100% wysokości staje się bardzo, bardzo łatwe: użycie
height: 100%; display: flex
naflex: 1
elemencie macierzystym i elemencie potomnym. Automatycznie zajmą całą dostępną przestrzeń w swoim pojemniku.Zwróć uwagę, jak proste są znaczniki i CSS. Żadnych hacków na stole ani nic takiego.
Model flex jest obsługiwany przez wszystkie główne przeglądarki, a także IE11 +.
Dowiedz się więcej o modelu flex tutaj.
źródło
overflow-y: auto;
można uniknąć „pojemników przekracza pierwotną wysokość ciała”.Nie wspominasz o kilku ważnych szczegółach, takich jak:
Oto jedna z możliwości:
Istnieje wiele odmian tego, w zależności od tego, które kolumny należy naprawić, a które są płynne. Możesz to zrobić również z pozycjonowaniem bezwzględnym, ale ogólnie znalazłem lepsze wyniki (szczególnie w zakresie przeglądarki) za pomocą pływaków.
źródło
Oto, co zadziałało dla mnie:
Użyj
position:fixed
zamiast tego wposition:absolute
ten sposób, nawet jeśli przewiniesz w dół, podział rozwinie się do końca ekranu.źródło
Oto poprawka na wysokość.
W swoim CSS użyj:
W przypadku przeglądarek, które nie obsługują
vh-units
, użyj modernizatora.Dodaj ten skrypt (aby dodać wykrywanie
vh-units
)Na koniec użyj tej funkcji, aby dodać wysokość rzutni,
#your-object
jeśli przeglądarka nie obsługujevh-units
:źródło
100%
działa inaczej dla szerokości i wysokości.Kiedy określisz
width: 100%
, oznacza to „zabierz 100% dostępnej szerokości z elementu nadrzędnego lub szerokości okna”.Gdy określisz
height: 100%
, oznacza to tylko: „zabierz 100% dostępnej wysokości z elementu nadrzędnego”. Oznacza to, że jeśli nie określisz wysokości na elemencie najwyższego poziomu, wysokość wszystkich dzieci będzie wynosić albo0
wysokość rodzica, i dlatego musisz ustawić najwyższy element, aby miałmin-height
wysokość okna.Zawsze określam, że ciało ma mieć minimalną wysokość 100vh, co ułatwia pozycjonowanie i obliczenia,
źródło
Dodaj
min-height: 100%
i nie określaj wysokości (lub ustaw na auto). Całkowicie wykonał dla mnie pracę:źródło
100vw === 100% szerokości rzutni.
100vh === 100% wysokości rzutni.
Jeśli chcesz ustawić
div
szerokość lub wysokość 100% rozmiaru okna przeglądarki, powinieneś użyć:Dla szerokości:
100vw
Do wysokości:
100vh
Lub jeśli chcesz ustawić mniejszy rozmiar, użyj
calc
funkcji CSS . Przykład:źródło
Istnieje kilka metod ustawiania wysokości od
<div>
100%.Metoda (A):
Metoda (B) przy użyciu vh:
Metoda (c) za pomocą Flex Box:
źródło
To działało dla mnie:
Zaczerpnięte z tej strony .
źródło
Najprostszym sposobem jest zrobienie tego w ten sposób.
źródło
Spróbuj ustawić
height:100%
whtml
&body
A jeśli chcesz 2 div wysokości to samo użyj lub ustaw
display:flex
właściwość elementu nadrzędnego .źródło
Mimo wszystkich odpowiedzi tutaj zdziwiłem się, że nikt tak naprawdę nie rozwiązał problemu. Jeśli użyłem
100vh
height
/min-height
, układ zepsuł się, gdy zawartość była dłuższa niż strona. Jeśli zamiast tego użyłem100%
height
/min-height
, układ zepsuł się, gdy zawartość była mniejsza niż wysokość strony.Rozwiązaniem, które rozwiązałem oba przypadki, było połączenie dwóch pierwszych odpowiedzi:
źródło
Wystarczy użyć jednostki „vh” zamiast „px”, co oznacza wysokość portu widokowego.
źródło
Elementy blokowe domyślnie zajmują całą szerokość swojego elementu nadrzędnego.
W ten sposób spełniają wymagania projektowe, czyli układanie w stosy w pionie.
To zachowanie nie rozciąga się jednak na wysokość.
Domyślnie większość elementów ma wysokość ich zawartości (
height: auto
).W przeciwieństwie do szerokości, musisz określić wysokość, jeśli chcesz uzyskać więcej miejsca.
Dlatego pamiętaj o tych dwóch rzeczach:
źródło
Oto coś, co nie jest dokładnie takie, jak w poprzednich odpowiedziach, ale może być pomocne dla niektórych:
https://jsfiddle.net/newdark/qyxkk558/10/
źródło
Użyj FlexBox CSS
Flexbox idealnie pasuje do tego typu problemów. Choć znany głównie z układania treści w kierunku poziomym, Flexbox działa równie dobrze w przypadku problemów z układem pionowym. Wszystko, co musisz zrobić, to owinąć pionowe sekcje w elastyczny pojemnik i wybrać, które chcesz rozwinąć. Automatycznie zajmą całą dostępną przestrzeń w swoim pojemniku.
źródło
Jedną z opcji jest użycie tabeli CSS. Ma doskonałą obsługę przeglądarki, a nawet działa w Internet Explorerze 8.
Przykład JSFiddle
źródło
Spróbuj tego - przetestowano:
Edycja: aktualizacja 2020:
Możesz
vh
teraz użyć :źródło
Możesz użyć
display: flex
iheight: 100vh
źródło
Musisz zrobić dwie rzeczy, jedną jest ustawienie wysokości na 100%, co już zrobiłeś. Drugi to pozycja absolutna. To powinno wystarczyć.
Źródło
źródło
vh
zamiast tego.vh
jeśli planujesz używać responsywnego projektowania na urządzeniach mobilnych.Wypróbuj następujący CSS:
źródło
W rzeczywistości dla mnie najlepsze było skorzystanie z
vh
nieruchomości.W mojej aplikacji React chciałem, aby div dopasowywał stronę wysoko nawet po zmianie rozmiaru. Próbowałem
height: 100%;
,overflow-y: auto;
ale żaden z nich nie działał, gdy ustawienieheight:(your percent)vh;
działało zgodnie z przeznaczeniem.Uwaga: jeśli używasz wypełnienia, zaokrąglonych rogów itp., Pamiętaj, aby odjąć te wartości od wartości
vh
procentowej właściwości lub doda to dodatkową wysokość i spowoduje wyświetlenie pasków przewijania. Oto moja próbka:źródło
box-sizing: border-box;
to przezwycięży, oznacza to, że rozmiar ramki jest również brany pod uwagę przy obliczaniu rozmiaru (szerokości i wysokości) elementu.źródło
Jeśli używasz
position: absolute;
i jQuery, możesz użyćźródło
HTML
CSS
źródło
widht
(pod koniec)