Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS]Stopka zawsze na dole
Forum PHP.pl > Forum > Przedszkole
Niedowiarek
Witam, mam taki problem otóż nie wiem w jaki sposób mogę uzyskać taki efekt, że stopka bez względu na treść powyżej niej, jest zawsze na dole. Aktualnie, gdy cała treść strony się mieści na ekranie (nie ma suwaka) stopka idzie do góry. Tu przykład: http://workdomain.ugu.pl/showteam.php
mortus
Google: sticky footer
qazwsx1
  1. css
  2.  
  3. #footer {
  4. position: absolute;
  5. bottom: 0;
  6. }
Niedowiarek
Po dodaniu position: absolute do CSS stopka jakby się zmniesza(chudsza) i wędruje do góry. Nie dałoby się jakoś inaczej? Przy sticky footer to w ogóle już cała strone się rozjeżdża.
toffiak
position: fixed;
bottom: 0;

Musisz tylko ustawić kontener z treścią aby był wyśrodkowany
ublizzard
  1. html, body {height: 100%;}
  2.  
  3. #wrap {min-height: 100%;}
  4.  
  5.  
  6. #footer {position: relative;
  7. height: 150px;
  8. clear:both;}
  9. }


Wydaje mi się że topowinno zadziałać, ale pozostała treść , czyli #wrap powinna mieć min-height 100%
Niedowiarek
Niestety nie działa ;/
ublizzard
Zawsze jest problem ze stopką, bo nie wiadomo w jakiej rozdzielczości i jakiej wielkości jest ekran monitora.
ale sprawdź sobie jeszcze to:
http://www.cssstickyfooter.com/
qazwsx1
  1. #footer {
  2. background: url(images/twilight/footer.png) repeat-x;
  3. padding-top: 13px;
  4. border-radius: 10px 10px 0px 0px;
  5. margin-top: 10px;
  6. width: 100%;
  7. bottom: 0;
  8. position: absolute;
  9. padding-bottom: 13px;
  10. }


jest na 100% ale nie ma odstępu od lewej strony dla tekstu

dodaj jeszcze 1 div tam gdzie masz tekst i zrób mu "padding-left:13px;
mortus
Panowie, ale to jest tylko jedna z wielu stron i zapominacie, że będą również strony, które zawierają więcej treści. Wtedy proponowane przez was rozwiązania, jak pozycjonowanie absolutne, czy ustawione (fixed) nie zdadzą egzaminu. Pierwsze spowoduje, że strona będzie się "rozjeżdżać", a drugie w ogóle służy do czegoś innego. Sticky footer to bardzo dobre rozwiązanie, ale wymaga przeprogramowania strony. Poza sticky footer nie ma dobrego rozwiązania dla problemu @Niedowiarka, choć pewną alternatywą może być JavaScript i obliczanie wszystkich niezbędnych wartości (wysokości bloków, pozycja w osi y).
mbak
Witam, odgrzewam kotleta, ale dlatego, że
znalazłem nowy sposób, na stopkę zawsze u dołu strony, niezależnie od ilości treści.
Jeśli treści będzie mało to "content" strony będzie rozciągnięty, jeśli dużo to stopka będzie normalnie, zawsze pod contentem, na końcu strony.
Otóż do dzieła:
Stopka musi być jako osobny kontener - np div.
Reszta strony albo w jednym kontenerze, albo w dwóch (nagłówek i treść), ja zakładam wersję z nagłówkiem.
Stopka oraz nagłówek na stronie zawsze mają raczej tę samą wysokość i to jest też wymagane.
Dlatego dobrze jest na sztywno ustawić wysokość tych elementów atrybutem "height". nie jest to konieczne, ale da pewność że nie popsuje to efektu końcowego.
Potem wykorzystujemy sztuczkę która jest piękna sama w sobie:
Ustawiamy wysokość min-height dla contentu strony wykorzystując funkcje calc() w CSS3 wg wzoru:
100% - wysokośćNaglowka(w px) - wysokośćStopki(w px) tak jak poniżej:

min-height: calc(100% - 150px - 149px);

i gotowe!
Rozwiązanie ma tę zaletę że nie trzeba tworzyć 10 divów i ustawiać kilkanaście atrybutów css i pilnować marginesów.
Po prostu ustawiamy minimalną wysokość contentu na cały obszar okna minus wysokość stopki i nagłówka, które są prawie zawsze stałe.
Jeśli coś jest nie tak, bo mamy poustawiane jakieś marginesy kosmiczne itp. po prostu modyfikujemy działanie dodając lub odejmując wartość marginesów.

Przykładowy kod HTML i CSS:

HTML:
  1. <div class="naglowek">
  2. // tutaj treść naglowka, jakieś logo itp...
  3. // w css ustawiamy wysokosc height elementu na sztywno
  4. </div>
  5.  
  6. <div class="content">
  7. //tresc strony
  8. </div>
  9.  
  10. <div class="stopka">
  11. // tutaj treść stopki...
  12. // w css ustawiamy wysokosc height elementu na sztywno
  13. </div>


CSS:
  1. .naglowek {
  2. height: 150px;
  3. }
  4.  
  5. .stopka {
  6. height: 100px;
  7. }
  8.  
  9. .content {
  10. min-height: calc(100% - 150px - 100px);
  11. }



Zapomniałem o jednym!!!
Żeby nie było tak różowo musimy jeszcze ustawić wysokość 100% dla strony:

  1. html, body {
  2. height: 100%;
  3. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.