Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Div na 100% wysokości okna jak w IE
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
piechnat
Witam…

Jak zrobić warstwę, która będzie miała wysokość 100%, gdy tekstu w niej będzie mało, a kiedy tekstu będzie więcej niż wysokość to warstwa zwiększy swoje rozmiary dostosowując się do wysokości tekstu (jak w IE) a nie tak, że tekst wyjedzie za nią, zostanie ucięty lub pojawią się paski przewijania?

Jak na razie wymyśliłem sposób w JS, ale to chyba nie jest dobre opierać layout na skrypcie?

Kod
<script>
  function winHeight() {
    if (typeof window.innerHeight == 'number') return innerHeight;
    return document.getElementsByTagName('html')[0].offsetHeight;
  }
  onload = onresize = function() {
    var box = document.getElementById('box');
    var tmp = winHeight() - box.offsetTop;
    if (tmp < 0) tmp = 0;
    box.style.height = tmp + 'px';
  }
</script>
<style>
  html, body { background: green; }
  body { text-align: center; margin: 0px; padding: 0px; border: 0px; }
  #content { background: yellow; width: 600px; margin: 0px auto; }
</style>
<div id="content">
  text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br>text
  <div id="box"></div>
</div>
elessar
a nie mozesz poprostu zrobic tak:
  1. <div style="height: 100%; border: 1px solid black">Test
  2. <br><br>Test</div>
revyag
Cytat(elessar @ 2005-06-15 12:42:35)
a nie mozesz poprostu zrobic tak:
  1. <div style="height: 100%; border: 1px solid black">Test
  2. <br><br>Test</div>

Nie wiem czy kolega sprawdzał, ale pod ff nie wygląda to za ciekawie jak jest więcej tekstu niż wysokość strony.
matid
A próbowałeś tak:
Kod
html,body
{
    height: 100%;
    padding: 0px;
    margin: 0px;
    background-color: #003366;
    text-align: center;
}
div#container
{
    margin-left: auto;
    margin-right: auto;
    min-height: 100%;
    width: 500px;
    background-color: #fefefe;
}

i do tego przykładowy html:
[code]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <link rel="stylesheet" type="text/css" href="style.css" />
  7. <title>Test</title>
  8. <?xml-stylesheet type="text/css" href="style.css"?>
  9. </head>
  10. <body xml:lang="en">
  11. <div id="container">
  12. Test
  13. </div>
  14. </body>
  15. </html>
piechnat
Dzieki serdeczne, o to chodziło, nigdy sie nawet nie zastanawialem nad tymi min-questionmark.gif? bo IE tego nie obsluguje, teraz tylko dodam _height: 100% dla niego i bedzie tak jak chce... thx...
Marcin_m
Fajnie, tylko co zrobić jeżeli chcę mieć na górze strony jakiś blok (powiedzmy niech bedzie to top z grafiką) a poniżej kolejny blok, który zajmuje całą reszte strony? No na tabelach można to banalnie zrobić, bo wystarczy dać:

  1. <table height="100%">
  2. <tr height="20" bgcolor="red"><td></td></tr>
  3. <tr height="100%" bgcolor="blue"><td></td></tr>


no niestety, ten sposób absolutnie zawodzi na divach, bo div uzyskuje wysokość 100% strony, czyli pojawia się suwak i możemy sobie go całego oglądać...
-SaraniS-
Przepraszam za odgrzebywanie, ale ja problem rozwiazalem, stosujac (akurat chodzilo mi o szerokosc ale i z wysokoscia powinno dzialac winksmiley.jpg
Kod
width: 100% - 170px;


wartosc przykladowa; Validator stwierdzil ze CSS jest poprawny smile.gif

Przy okazji inny problem:
Div w divie; przy czym ten drugi zajmuje XX% pierwszego i musi byc wysrodkowany. Ze srodkowaniem w poziomie nie bylo problemu (margin: auto + dla IE text-align: center w nadrzednym), ale jak go wysrodkowac pionowo?
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.