W pokazanym poniżej znaczniku próbuję rozciągnąć div treści aż do dołu strony, ale rozciągnie się tylko wtedy, gdy będzie zawartość do wyświetlenia. Powodem, dla którego chcę to zrobić, jest to, że pionowa ramka nadal pojawia się na stronie, nawet jeśli nie ma żadnych treści do wyświetlenia.
Oto mój HTML :
<body>
<form id="form1">
<div id="header">
<a title="Home" href="index.html" />
</div>
<div id="menuwrapper">
<div id="menu">
</div>
</div>
<div id="content">
</div>
I mój CSS :
body {
font-family: Trebuchet MS, Verdana, MS Sans Serif;
font-size:0.9em;
margin:0;
padding:0;
}
div#header {
width: 100%;
height: 100px;
}
#header a {
background-position: 100px 30px;
background: transparent url(site-style-images/sitelogo.jpg) no-repeat fixed 100px 30px;
height: 80px;
display: block;
}
#header, #menuwrapper {
background-repeat: repeat;
background-image: url(site-style-images/darkblue_background_color.jpg);
}
#menu #menuwrapper {
height:25px;
}
div#menuwrapper {
width:100%
}
#menu, #content {
width:1024px;
margin: 0 auto;
}
div#menu {
height: 25px;
background-color:#50657a;
}
Odpowiedzi:
Twój problem nie polega na tym, że div nie ma 100% wysokości, ale że pojemnik wokół niego nie jest. Pomoże to w przeglądarce Podejrzewam, że używasz:
Konieczne może być również dostosowanie marginesów i marginesów, ale dostaniesz 90% możliwości. Jeśli chcesz, aby działał ze wszystkimi przeglądarkami, będziesz musiał trochę z tym popsuć.
Ta strona ma kilka doskonałych przykładów:
http://www.brunildo.org/test/html_body_0.html
http://www.brunildo.org/test/html_body_11b.html
http://www.brunildo.org/test/index.html
Polecam także przejść na http://quirksmode.org/
źródło
Postaram się odpowiedzieć na pytanie bezpośrednio w tytule, zamiast dążyć do przyklejenia stopki na dole strony.
Ustaw div na dolną część strony, jeśli nie ma wystarczającej ilości treści, aby wypełnić dostępne pionowe okno przeglądarki:
Demo na (przeciągnij uchwyt ramki, aby zobaczyć efekt): http://jsfiddle.net/NN7ky
(plus: czysty, prosty. Minus: wymaga flexbox - http://caniuse.com/flexbox )
HTML:
CSS:
ta-da - lub jestem po prostu zbyt śpiący
źródło
Spróbuj pobawić się następującą zasadą css:
Zmień wysokość w celu dopasowania do strony. wysokość jest wymieniona dwukrotnie dla kompatybilności z różnymi przeglądarkami.
źródło
możesz trochę zhakować to z deklaracją minimalnej wysokości
źródło
Wypróbuj rozwiązanie „Sticky Footer” Ryana Faita,
http://ryanfait.com/sticky-footer/
http://ryanfait.com/resources/footer-stick-to-bottom-of-page/
Działa w przeglądarkach IE, Firefox, Chrome, Safari i podobno w Operze, ale nie przetestowałem tego. To świetne rozwiązanie. Bardzo łatwe i niezawodne do wdrożenia.
źródło
Właściwość min-height nie jest obsługiwana przez wszystkie przeglądarki. Jeśli potrzebujesz #content, aby zwiększyć jego wysokość na dłuższych stronach, właściwość height skróci go.
To trochę hack, ale możesz dodać pusty div o szerokości 1px i wysokości np. 1000px w swoim div #content. To zmusi zawartość do co najmniej 1000 pikseli wysokości i nadal pozwoli na dłuższe treści, aby zwiększyć wysokość w razie potrzeby
źródło
Chociaż nie jest tak elegancki jak czysty CSS, mała część javascript może pomóc w osiągnięciu tego:
źródło
Próbować:
Jeszcze go nie testowałem ...
źródło
Lepka stopka o stałej wysokości:
Schemat HTML:
CSS:
źródło
Spróbuj http://mystrd.at/modern-clean-css-sticky-footer/
Powyższy link nie działa, ale ten link https://stackoverflow.com/a/18066619/1944643 jest w porządku. :RE
Próbny:
źródło
Możesz użyć jednostki długości „vh” dla właściwości min-height samego elementu i jego rodziców. Jest obsługiwany od IE9:
CSS:
źródło
Wydaje mi się, że problem zostałby rozwiązany po prostu poprzez wypełnienie HTML w 100%, może to być wypełnienie treści w 100% HTML, ale HTML nie wypełnia 100% ekranu.
Spróbuj z:
źródło
Również może ci się spodobać: http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm
Nie jest to dokładnie to, o co prosiłeś, ale może również pasować do twoich potrzeb.
źródło
Nie mam kodu, ale wiem, że zrobiłem to raz, używając kombinacji wysokości: 1000px i marginesu-dołu: -1000px; Spróbuj tego.
źródło
W zależności od tego, jak działa Twój układ, możesz uniknąć ustawienia tła w
<html>
elementu, który zawsze ma wysokość co najmniej rzutni.źródło
Nie jest to możliwe przy użyciu tylko arkuszy stylów (CSS). Niektóre przeglądarki nie akceptują
jako wartość wyższa niż punkt widzenia okna przeglądarki.
JavaScript jest najłatwiejszym rozwiązaniem dla różnych przeglądarek, choć, jak wspomniano, nie jest ani czysty, ani piękny.
źródło
Wiem, że nie jest to najlepsza metoda, ale nie mogłem tego rozgryźć bez bałagania pozycji w nagłówku, menu itp. Więc .... Użyłem stołu dla tych dwóch kolumn. To była SZYBKA naprawa. Nie wymaga JS;)
źródło
Nie jest to ani najlepsza, ani najlepsza implementacja najwyższych standardów, ale możesz zmienić DIV dla SPAN ... To nie jest tak godne polecenia, ale szybka poprawka = P =)
źródło