Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS] Stopka na dole strony
Forum PHP.pl > Forum > Przedszkole
Macok
Mam problem ze stopką na stronie.
Jeżeli treść strony jest dłuższa niż wysokość ekranu to stopka prawidłowo ustawia się na dole.
Ale co zrobić, żeby ustawiała się na dole również gdy treść strony jest krótsza?
Próbowałem czegoś takiego:
  1. position: absolute;
  2. bottom: 0;
Ale wtedy zawsze ustawia się na dole okna przeglądarki i jeżeli treść jest długa to najeżdza na resztę strony.
kazag
ja robiąc stopkę umieszczam ją divie zawierającym całą stronę i nadaje
Kod
clear:both;
, dzięki czemu stopka, bez zadnych absolutów, zawsze jest od razu pod trescią, nawet, jeśli treść ma jedną linijkę.
Macok
No wiem że wtedy jest pod treścią, ale chodzi mi o to żeby była zawsze na samym dole okna przeglądarki, a w ten sposób co ty mówisz to jeżeli treść będzie miała 1 linijke to stopka ustawi sie gdzieś na środku strony
Szunaj85
Spróbuj na div-ach. Najprościej jeśli div-y na stronie będą pozycjonowane względem siebie. Stopkę robisz w prosty sposób i zawsze powinna wyświetlać się na samym dole strony:
  1. div {
  2. position: relative;
  3. }
  4. #stopka {
  5. clear: both;
  6. }
Macok
Czyli mam ustawić "position: relative" dla wszystkich div'ów na stronie!?
Shili
Nie, nie trzeba
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  4.  
  5. * {margin: 0; padding: 0;}
  6. html {height: 100%;}
  7. body {position: relative; text-align: center; min-height: 100%; height: auto !important; height: 100%;}
  8. #main {width: 500px; margin: 0 auto; padding-bottom: 30px; text-align: left;}
  9. #content {border: solid 1px black; padding: 10px;}
  10. #footer {border: solid 1px red; width: 500px; position: absolute; bottom: 0; left: 50%; margin-left: -250px;}
  11. </head>
  12. <div id="main">
  13. <div id="content">
  14. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam justo ante, lacinia nec, dignissim nec, posuere quis, augue. Donec dignissim. Mauris sem eros, pellentesque et, pulvinar vulputate, varius eget, tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In hac habitasse platea dictumst. Sed eu est. Ut fringilla ligula. Nullam vehicula tellus vitae erat. Donec orci. Nam quis pede. Vivamus eleifend metus vel diam. Ut vulputate turpis nec nisl. Donec neque leo, faucibus in, ornare eu, semper a, massa.<br/>
  15. </div>
  16. </div>
  17. <div id="footer">
  18. A tutaj stopka.
  19. </div>
  20. </body>
  21. </html>


Oto przykład. Na IE6 nie radzę wchodzić - sam kod działa, jeśli tekstu od początku do końca jest tyle samo, to znaczy jeśli nie jest dodawany dynamicznie, jak w tym przykładzie. Innymi słowy normalnie będzie działać jak trzeba, w przykładzie z bliżej mi nieznanych przyczyn źle renderuje.

Wiem, że jest to na position: absolute, co może się nie spodobać, jednakże nie widzę innego wyjścia, żeby zawsze był na dole strony, bez względu na ilość tekstu. No chyba, że w grę wchodzi java script, ale to rozwiązanie, chociaż może nie do końca eleganckie zadziała nawet tam gdzie js jest wyłączona ^^
Poza tym było to wspomniane już w pierwszym poście, więc chyba nie ma nic przeciwko winksmiley.jpg
-Macok-
Próbowałem tym sposobem, ale zobacz co się stanie jak treść strony będzie długa i przekroczy wysokość ekranu.
Stopka zakryje treść dry.gif
Shili
Naprawdę próbowałeś? Poklikaj sobie na przykładzie na "dodaj więcej treści" (jak już pisałam - pod ie6 ma problemy z dynamicznym dokładaniem treści, więc tak nie radzę próbować, ale normalnie działa) i sprawdź.

U mnie podany w przykładzie sposób działa na Firefoksie 3, Operze 9.51, Chromie, IE6/7 i Safari. I w żadnym stopka nie przykrywa treści.
Macok
No dobra dzięki, spróbuje.
Zadam jeszcze 1 pytanie troche z innej beczki:
Chcę żeby wysokość mojej strony zawsze byla rowna wysokości ekranu.
Mam 2 divy treść i stopkę.
Jeżeli ustawie w treści height: 70%; w stopce height: 20%; a między nimi margin: 10%; to będzie działać?
A jeżeli nie to jak osiągnąć taki efekt?
Shili
Cytat
Jeżeli ustawie w treści height: 70%; w stopce height: 20%; a między nimi margin: 10%; to będzie działać?
Będzie. A na czymś Ci nie działa? Aż z ciekawości sprawdziłam to na najpopularniejszych przeglądarkach i każda dobrze renderuje 0o
Macok
No dobra dzięki koniec tematu.
Oczywiście punkcik dla ciebie smile.gif
rybik
Kilka uwag które moga sie przydac przy okazji:

- height: ileś% zadziała tylko gdy nadrzędny element ma ustawioną wysokość (może mieć też w %), nie dotyczy tagu <html> który wysokości nie musi mieć, żeby body mogło używać

- floatujące elementy bez ustawionej wysokości lubia pozbawiać nadrzędnego diva wysokości automatycznej, wynikającej z treści w środku, tak jakby zewnętrzny miał height 0, pomimo, ze wewnętrzny ma 3 akapity tekstu. Zwykle pomaga div środkowy z clear:both

- poprawny kod powinien zawierać position: relative dla każdego floatera
Macok
Chce dopasować wysokość strony do wysokości ekranu i mam problem.
Jak już napisał rybik, aby ustawic wysokość elementu na x%, to nadrzedny element musi mieć ustawioną wysokość.
I tu problem, bo nie wiem jak wysoki jest ekran użytkownika, a jak daje 100% to nie działa.
Co zrobić?
Shili
Podaj cały kod - zobaczy się. Bo działać powinno winksmiley.jpg
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.