Mam element nagłówka i element treści:
#header
#content
Chcę, aby nagłówek miał stałą wysokość, a zawartość wypełniła całą pozostałą wysokość dostępną na ekranie overflow-y: scroll;
.
Czy jest to możliwe bez Javascript?
Sztuczka polega na określeniu 100% wysokości w elementach html i body. Niektóre przeglądarki wykorzystują elementy nadrzędne (html, body), aby obliczyć wysokość.
<html>
<body>
<div id="Header">
</div>
<div id="Content">
</div>
</body>
</html>
html, body
{
height: 100%;
}
#Header
{
width: 960px;
height: 150px;
}
#Content
{
height: 100%;
width: 960px;
}
zapomnij o wszystkich odpowiedziach, ta linia CSS zadziałała dla mnie w 2 sekundy:
1vh
= 1% wysokości ekranu przeglądarkiźródło
Aby uzyskać elastyczne skalowanie układu, możesz użyć:
[aktualizacja z listopada 2018 r.] Jak wspomniano w komentarzach, użycie minimalnej wysokości może uniknąć problemów z projektami odpowiadającymi
[aktualizacja z kwietnia 2018 r.] Jak wspomniano w komentarzach, w 2011 roku, kiedy zadawano pytanie, nie wszystkie przeglądarki obsługiwały jednostki widoku. Inne odpowiedzi były rozwiązaniami z tamtych czasów -
vmax
nadal nie jest obsługiwane w IE, więc może to nie być jeszcze najlepsze rozwiązanie dla wszystkich.źródło
min-height: 100vh
byłoby znacznie lepiej. Skaluje się również do responsywnych projektów.Właściwie najlepsze podejście jest takie:
To rozwiązuje wszystko dla mnie i pomaga mi kontrolować moją stopkę i może mieć stałą stopkę bez względu na to, czy strona jest przewijana w dół.
Rozwiązanie techniczne - EDYTOWANE
Historycznie rzecz biorąc, „wysokość” jest trudna do uformowania, w porównaniu do „szerokości” jest najłatwiejsza. Ponieważ css skupia się
<body>
na stylizacji do pracy. Kod powyżej - podaliśmy<html>
i<body>
wysokość. W tym miejscu pojawia się magia - ponieważ na stole do gry mamy „minimalną wysokość”, mówimy przeglądarce, która<body>
jest lepsza,<html>
ponieważ<body>
przechowuje minimalną wysokość. To z kolei pozwala<body>
na nadpisanie,<html>
ponieważ<html>
wysokość miałam już wcześniej. Innymi słowy, oszukujemy przeglądarkę, aby „odbijała”<html>
się od stołu, abyśmy mogli stylizować niezależnie.źródło
min-height
iheight
?<body>
na stylizacji do pracy. Ten kod: daliśmy<html>
i<body>
wysokość. W tym miejscu pojawia się magia - ponieważ na stole do gry mamy „minimalną wysokość”, mówimy serwerowi, który<body>
jest lepszy od tego,<html>
że<body>
ma minimalną wysokość. To z kolei pozwala<body>
na nadpisanie,<html>
ponieważ<html>
wysokość miałam już wcześniej. Innymi słowy, oszukujemy serwer, aby „wyskakiwał”<html>
ze stołu, abyśmy mogli stylizować niezależnie.Możesz użyć vh na właściwości min-height.
W zależności od tego, jak używasz marginesów, możesz wykonać następujące czynności ...
źródło
Przyjęte rozwiązanie w rzeczywistości nie zadziała. Można zauważyć, że zawartość
div
będzie równa wysokości jego rodzicabody
. Zatem ustawieniebody
wysokości na100%
spowoduje ustawienie jej równej wysokości okna przeglądarki. Powiedzmy, że okno przeglądarki miało768px
wysokość, ustawiającdiv
wysokość zawartości na100%
,div
wysokość z kolei będzie wynosić768px
. W ten sposób zostanie utworzony element div nagłówka,150px
a element div zawartości768px
. W końcu zawartość będzie150px
znajdować się poniżej dolnej części strony. Aby uzyskać inne rozwiązanie, sprawdź ten link.źródło
Dzięki HTML5 możesz to zrobić:
CSS:
HTML:
źródło
U mnie następny działał dobrze:
Nagłówek i zawartość zawinąłem w div
Użyłem tego odniesienia, aby wypełnić wysokość za pomocą flexbox. CSS wygląda tak:
Aby uzyskać więcej informacji na temat techniki flexbox, odwiedź odnośnik
źródło
Możesz także ustawić rodzica na
display: inline
. Zobacz http://codepen.io/tommymarshall/pen/cECyHUpewnij się, że wysokość html i body również jest ustawiona na 100%.
źródło
Przyjęta odpowiedź nie działa. A najwyższa głosowana odpowiedź nie odpowiada faktycznemu pytaniu. Z nagłówkiem o stałej wysokości w pikselach i wypełniaczem na pozostałym ekranie przeglądarki i przewijaj, aby wyświetlić owerflow. Oto rozwiązanie, które faktycznie działa, wykorzystując pozycjonowanie bezwzględne. Zakładam też, że wysokość nagłówka jest znana z dźwięku "stałego nagłówka" w pytaniu. Jako przykład używam 150px:
HTML:
CSS: (dodawanie koloru tła tylko dla efektu wizualnego)
Aby uzyskać bardziej szczegółowe spojrzenie na to, jak to działa, z rzeczywistą zawartością wewnątrz
#Content
, spójrz na ten plik jsfiddle , używając wierszy i kolumn ładowania początkowego.źródło
bottom
Nieruchomość upewnił się, że#Content
pozostaje zatrzymany na końcu strony. Doceniam, że poświęciłeś czas na wyjaśnienie.W tym przypadku chcę, aby główny element div zawartości był płynny, tak aby cała strona zajmowała 100% wysokości przeglądarki.
height: 100vh;
źródło
Dodaję tutaj moje 5 centów i zaproponuję klasyczne rozwiązanie:
To zadziała we wszystkich przeglądarkach, bez skryptu, bez fleksa. Otwórz fragment kodu w trybie pełnej strony i zmień rozmiar przeglądarki: pożądane proporcje są zachowywane nawet w trybie pełnoekranowym.
Uwaga:
idHeader.height
iidContent.top
są dostosowywane w celu uwzględnienia obramowania i powinny mieć tę samą wartość, jeśli obramowanie nie jest używane. W przeciwnym razie elementy wyjdą z widoku, ponieważ obliczona szerokość nie obejmuje obramowania, marginesu i / lub wypełnienia.left:0; right:0;
można zastąpićwidth:100%
z tego samego powodu, jeśli nie ma obramowania.padding-top
i / lubpadding-bottom
atrybuty do#idOuter
elementu.Aby zakończyć moją odpowiedź, oto układ stopki:
A oto układ z nagłówkiem i stopką:
źródło
Jeśli nie potrzebujesz obsługi IE 9 i starszych, użyłbym flexbox
Musisz także uzyskać treść, aby wypełnić całą stronę
źródło
PLaY CSS | Stały układ nagłówka / stopki / wyśrodkowanej jednej kolumny w różnych przeglądarkach
Ramki CSS, wersja 2: Przykład 2, określona szerokość | 456 Berea Street
Jedną ważną rzeczą jest to, że chociaż brzmi to łatwo, do pliku CSS będzie wchodzić sporo brzydkiego kodu, aby uzyskać taki efekt. Niestety, to naprawdę jedyna opcja.
źródło
źródło
Najlepszym rozwiązaniem, jakie do tej pory znalazłem, jest ustawienie elementu stopki na dole strony, a następnie oszacowanie różnicy przesunięcia stopki od elementu, który musimy rozwinąć. na przykład
Plik html
Plik css
Plik js (przy użyciu jquery)
Możesz również chcieć zaktualizować wysokość elementu zawartości przy każdej zmianie rozmiaru okna, więc ...
źródło
Bardzo prosty:
źródło
Czy próbowałeś czegoś takiego?
CSS:
HTML:
źródło