Próbuję ustawić a <div>
na pewien procent wysokości w CSS, ale po prostu pozostaje taki sam rozmiar jak zawartość w nim. Kiedy jednak usuwam HTML 5 <!DOCTYTPE html>
, działa, <div>
zajmując całą stronę zgodnie z życzeniem. Chcę, aby strona została zweryfikowana, więc co mam zrobić?
Mam ten CSS na <div>
, który ma identyfikator page
:
#page {
padding: 10px;
background-color: white;
height: 90% !important;
}
height
nieruchomości o wartości procentowych: stackoverflow.com/a/31728799/3597276Odpowiedzi:
Procent czego?
Aby ustawić procentową wysokość, jego element nadrzędny (*) musi mieć określoną wysokość. Jest to dość oczywiste, ponieważ jeśli zostawisz wysokość as
auto
, blok przyjmie wysokość swojej zawartości ... ale jeśli sama treść ma wysokość wyrażoną w procentach rodzica, to trochę się stworzyłeś Catch 22. Przeglądarka poddaje się i po prostu używa wysokości zawartości.Zatem element nadrzędny elementu div musi mieć wyraźną
height
właściwość. Chociaż ta wysokość może być również procentowa, jeśli chcesz, to po prostu przenosi problem na następny poziom.Jeśli chcesz, aby wysokość div była procentem wysokości widocznego obszaru, każdy przodek elementu div, w tym
<html>
i<body>
, musi miećheight: 100%
, więc istnieje łańcuch wyraźnych procentowych wysokości do elementu div.(*: lub, jeśli element div jest umieszczony, „zawierający blok”, który jest najbliższym przodkiem, który ma również zostać umieszczony).
Alternatywnie, wszystkie nowoczesne przeglądarki i IE> = 9 obsługują nowe jednostki CSS w odniesieniu do wysokości (
vh
) i szerokości (vw
):Więcej informacji znajdziesz tutaj .
źródło
Trzeba ustawić wysokość nad
<html>
i<body>
elementów, jak również; w przeciwnym razie będą wystarczająco duże, aby zmieścić się w treści. Na przykład :źródło
Odpowiedź bobince'a poinformuje Cię, w jakich przypadkach „wysokość: XX%;” będzie działać lub nie.
Jeśli chcesz stworzyć element o ustalonym stosunku (wysokość:% własnej szerokości), najlepszym sposobem na to jest efektywne ustawienie wysokości za pomocą
padding-bottom
. Przykład dla kwadratu:Kwadratowy pojemnik będzie po prostu wypełniony, a zawartość rozszerzy się, aby wypełnić pojemnik. Długi artykuł z 2009 roku na ten temat: http://alistapart.com/article/creating-intrinsic-ratios-for-video
źródło
Możesz użyć
100vw / 100vh
. CSS3 daje nam jednostki zależne od widocznego obszaru. 100vw oznacza 100% szerokości widocznego obszaru. 100vh; 100% wysokości.źródło
W innym przypadku, aby pozbyć się tego definiującego procentu rodzica, możesz użyć
body {height: 100vh}
vh oznacza wysokość rzutni
Myślę, że to pomaga
źródło
Czasami możesz chcieć warunkowo ustawić wysokość elementu div, na przykład gdy cała zawartość jest mniejsza niż wysokość ekranu. Ustawienie wszystkich elementów nadrzędnych na 100% spowoduje odcięcie treści, gdy będzie ona większa niż rozmiar ekranu.
Tak więc sposobem na obejście tego jest ustawienie minimalnej wysokości:
Kontynuuj, aby elementy nadrzędne automatycznie dostosowywały wysokość. Następnie w głównym elemencie div odejmij rozmiar w pikselach elementu div nagłówka i stopki od 100vh (jednostek widocznych). W css coś takiego:
min-height: calc (100vh - 246px);
100vh to pełna długość ekranu bez otaczających elementów div. Po ustawieniu minimalnej wysokości, a nie wysokości, zawartość dłuższa niż ekran będzie nadal płynąć, zamiast zostać odcięta.
źródło