Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysokość dla div'a
Forum PHP.pl > Forum > Po stronie przeglądarki
mike
Mam taką sytuację:

3 elementy div o następującym wyglądzie:
Kod
+------------------------------------------------+
|+-------------++-------------------------------+|
||             ||                               ||
||             ||                               ||
||             ||                               ||
||             ||                               ||
||      B      ||                               ||
||             ||                               ||
||             ||                C              ||
||             ||                               ||
|+-------------+|                               ||
|               |                               ||
|               |                               ||
|               |                               ||
|     A         |                               ||
|               +-------------------------------+|
|                                                |
|                                                |
|                                                |
+------------------------------------------------+


I teraz pytanie:

Jak zrobić aby element B lub chociażby C miał maxymalną wysokość na jaką pozwala A?
Element A równie dobrze może być elementem BODY.


Mówimy o XHTML'u i style="height: 100%" nie wchodzi w gre bo nie działa.
wassago
mi działa.
  1. <div style="border: solid 1px red; height: 500px; width: 500px">
  2. <div style="border: solid 1px blue; height: 200px; width: 100px; float: left"></div>
  3. <div style="border: solid 1px green; height: 100%; width: 300px; float: right"></div>
  4. </div>
mike
Cytat
Dwie rzeczy są nieskończone: Wszechświat i ludzka głupota; z czego co do Wszechświata nie jestem pewien.

Albert Einstein

Nie mam pojęcia co robiłem źle :/

Dzieki za uświadomienie mnie o mojej ułomności biggrin.gif
Dravo
Tworzenie ciekawych, ustandaryzowanych oraz `zhacowanych` i działających wszędzie layautów jest szeroko opisywane w serwisie A List Apart.

Polecam artykuł: Creating Liquid Layouts with Negative Margins.
mike
Za wcześnie się ucieszyłem.

Taki kod działa bez zarzutu.
  1. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" >
  2. <title>Test </title>
  3.  
  4. <style type="text/css">
  5. .main {
  6. border: 1px solid red;
  7. width: 500px;
  8. margin: auto;
  9. height: 100%;
  10. }
  11. </head>
  12.  
  13. <div class="main">Test diva</div>
  14. </body>


Ale po dodaniu:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" >
  3. <head>
  4. <title>Test </title>
  5.  
  6. <style type="text/css">
  7. .main {
  8. border: 1px solid red;
  9. width: 500px;
  10. margin: auto;
  11. height: 100%;
  12. }
  13. </head>
  14.  
  15. <div class="main">Test diva</div>
  16. </body>

wszystko się chrzani.

No przecież nie zaczną pomijać Doctype'a :/

Pomocy raz jeszcze, bo ja już głupieję. A myślałem że znam CSS winksmiley.jpg
FiDO
Dodaj
Kod
body, html {
  height: 100%;
}
Diablos
Mam podobny problem, lecz u mnie cały problem tkwi w tym ze na jdnej przegladarce jest ok, na drugiej w miare ok, a na trzeciej nie do przyjecia smile.gif

mianowicie:

http://e37.e2u.cc/daln/


kod:
Kod
<style>
body
{
font-family: verdana, arial, serif;
margin: 0;
padding: 0;
text-align: center;
color: gray;
font-size: 10px;
text-align: left;
}

</style>
<div style="width: 100%; height: 134px; background: url(images/tlo.jpg) repeat-x; text-align: center;">
<div style=" width: 717px; height: 134px; margin: 0 auto 0 auto; background: url(images/logo.jpg) top center no-repeat;">
</div>
<div style="display: block; width: 100%; border: solid 0px; background: #f1f1f1; text-align: center;">
<div style="display: block; width: 715px; border: solid 0px; margin: 0 auto 0 auto;">

    <div style="display: block; width: 100%; height: 500px; border: solid 0px; text-align: left; background: #e6e7eb;">
      <div style="display: block; width: 183px; height: 100%; background: #dadde2; float: left; padding-top: 10px;">

       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: -1px; width: 160px; height: auto; background: #9a9a9b; float: left; border: 1px solid #7e7e7e;">sadasd</div>
       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: 3px; width: 160px; height: 100px; background: #bfc0c1; float: left; border: 1px solid #7e7e7e;">asd</div>
      
       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: -1px; width: 160px; height: auto; background: #9a9a9b; float: left; border: 1px solid #7e7e7e;">sadasd</div>
       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: 3px;  width: 160px; height: 100px; background: #bfc0c1; float: left; border: 1px solid #7e7e7e;"></div>

        <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: -1px; width: 160px; height: auto; background: #9a9a9b; float: left; border: 1px solid #7e7e7e;">sadasd</div>
       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: 3px;  width: 160px; height: 100px; background: #bfc0c1; float: left; border: 1px solid #7e7e7e;"></div>


        <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: -1px; width: 160px; height: auto; background: #9a9a9b; float: left; border: 1px solid #7e7e7e;">sadasd</div>
       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: 3px;  width: 160px; height: 100px; background: #bfc0c1; float: left; border: 1px solid #7e7e7e;"></div>


        <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: -1px; width: 160px; height: auto; background: #9a9a9b; float: left; border: 1px solid #7e7e7e;">sadasd</div>

       <div style="display: block; margin-top: 0px; margin-left: 10px; margin-bottom: 3px;  width: 160px; height: 100px; background: #bfc0c1; float: left; border: 1px solid #7e7e7e;"></div>

      </div>
<div style=" margin-top: 10px; margin-left: 3px; width: 320px; background: #f6f7f9; border: 1px solid #cacacc; float: left;">sadsadsad</div>
      <div style="display: block; width: 183px; height: 100%; background: #dadde2; float: right;">
       <div style="display: block; margin: 7pt; width: 160px; height: auto; background: #bfc0c1; float: left; border: 1px solid #7e7e7e;">sa</div>
      </div>
    </div>
    <div style="display: block; width: 100%; height: auto; border: solid 0px; background: #dadde2 top center no-repeat;">Stopka Szczurebska</div>

</div>
<div>



Pod IE:
- teoretycznie wszystko ok, jedyne co psuje wyglad to to, ze szerokosci MENU sa jakos wieksze niz na reszcie przegladarek, tak jakby IE inaczej interpretował szerokosc w px

Pod Opera:
- prawe menu nie dojezdza do konca (nie wiem jak naprawic)

Pod FF:
- najgorzej wyglada, bloki menu po lewej stronie wyjezdzaja poza div, w którym sie znajduja, a przeciez div w ktorym sie znajduja powinien sie automatycznie wydłuzac.

Prosze o pomoc z gory dziekuje.
revyag
Miałem chwilkę więc wstępnie poprawiłem ten kod, bo to była masakra snitch.gif Trzeba by jeszcze go zoptymalizowac, wyrzucić niepotrzebne divy, ale jak mówie miałem tylko chwilkę snitch.gif
Stosujesz mase niepotrzebnych styli, niektóre nieprawidłowo.
Np. div jest elementem blokowym, więc po co mu jeszcze styl display:block.
Co do wyświetlania trzech kolumn o takiej samej wysokości, to zajrzyj na ala, tam jest rozwiązanie problemu.
Kod
body {
    font-family: verdana, arial, serif;
    margin: 0;
    padding: 0;
    text-align: center;
    color: gray;
    font-size: 10px;
    text-align: center;
}

div#container {
    width:100%;
    margin: 0 auto;
    background: url(images/tlo.jpg) repeat-x;
}
div#logo {
    width: 717px;
    height: 134px;
    margin: 0 auto;
    background: url(images/logo.jpg) top center no-repeat;
}
div#cont {
    width: 100%;
    border: 0;
    background-color: #f1f1f1;
    text-align: center;
}
div#out {
    width: 715px;
    margin: 0 auto;
}
div#in {
    width: 100%;
    text-align: left;
    background-color: #e6e7eb;
}
div#left {
    width: 183px;
    background-color: #dadde2;
    float: left;
    padding-top: 10px;
    text-align:left;
}

div.box1,div.box2 {
    margin: 0 0 -1px 10px;
    width: 160px;
    height: auto;
    background: #9a9a9b;
    border: 1px solid #7e7e7e;
}
div.box2 {
    margin-bottom: 3px;
    height: 100px;
    background: #bfc0c1;
}

div#main {
    margin-top: 10px;
    margin-left: 3px;
    width: 320px;
    background: #f6f7f9;
    border: 1px solid #cacacc;
    float: left;    
}
div#right {
    width: 183px;
    height: 100%;
    background: #dadde2;
    float: right;
}
div.box3 {
    margin: 7pt;
    width: 160px;
    height: auto;
    background: #bfc0c1;
    border: 1px solid #7e7e7e;
}

div#foot {
    width: 100%;
    height: auto;
    background: #dadde2 top center no-repeat;
}

  1. <div id="container">
  2. <div id="logo"></div>
  3. <div id="cont">
  4. <div id="out">
  5. <div id="in">
  6. <div id="left">
  7. <div class="box1">sadasd</div>
  8. <div class="box2">asd</div>
  9. <div class="box1">sadasd</div>
  10. <div class="box2"></div>
  11. <div class="box1">sadasd</div>
  12. <div class="box2"></div>
  13. <div class="box1">sadasd</div>
  14. <div class="box2"></div>
  15. <div class="box1">sadasd</div>
  16. <div class="box2"></div>
  17. </div>
  18. <div id="main">sadsadsad</div>
  19. <div id="right">
  20. <div class="box3">sa</div>
  21. </div>
  22. <br style="clear:both" />
  23. </div>
  24. <div id="foot">Stopka Szczurebska</div>
  25. </div>
  26. <div>
  27. </div>
Diablos
ok, dzieki bardzo, jest ok w 99%... jeszcze tylko prawe menu sie nie dociaga nie wiem czemu :|
revyag
Nie dociąga się ? Chodzi o to że ma mniejszą wysokość niż to lewe ? To podałem Ci linka, gdzie jest opisane jak zrobić żeby było ok.
mike
W związku z tym że mam kolejny problem dotyczący wyskokości elementów blokowych a ten temat nie zjechał jszcze za nisko postanowiłem go kontynuować.

Problem jest następujący:
Mam trzy elementy blokowe A, B i C.
Wysokość dla elementu A nie jest ustawiona - zmienia się ona pod wpływem elementu B, w którym jest na przykład jakieś menu lub coś innego.
Jak sprawić że wysokość elementu C będzie zmieniała się wraz z wyskokością elementu A przyjmując maksymalną wartość, na którą może sobie pozwolić. Czyli teoretycznie 100%, ale 100% w ramach elementu A.

Kod
+------------------------------------------------+
|+-------------++-------------------------------+|
||             ||                               ||
||             ||                               ||
||             ||                               ||
||             ||                               ||
||      B      ||                               ||
||             ||                               ||
||             ||                C              ||
||             ||                               ||
|+-------------+|                               ||
|               |                               ||
|               |                               ||
|               |                               ||
|     A         |                               ||
|               +-------------------------------+|
|                                                |
|                                                |
|                                                |
+------------------------------------------------+
Kinool
pozwole sobie dolaczyc sie do tematu smile.gif

mam sobie DIV-a (glownego) w niem sa osadzone inne DIV-y (kolumny z textem) jaz zrobic zeby ten kolumny mialy zawsze dlugosc glownego DIV-a??

po teraz np sa 3 kolumny w roznym stopniu wypelnione trescia i tlo dochodzi tylko do konca tresci, powstaja "schody" czego chialbym unkinac.

problem tylko w IE (gupi IE!!)

probowalem im dac height: 100% ale to nic nie daje, nadanie wysokosci glownemu DIV-owi tez odpada bo to zalezy od tego co tam wczytam, gupi IE chyba tez niezna atrybuty min-height: sad.gif

PS. Ludzie apeluje przestancie uzywac IE a swiat stanie sie prostrzy i latwiejszy!!!!!!!! tongue.gif
tiraeth
IE nie zna wielu atrybutów. Nawet IE7, podobno, w wersji BETA 1 zamiast mieć naprawione poprawne wyświetlanie kodu, został dobudowany w niepotrzebne śmieci...
FiDO
Cytat(tiraeth @ 2005-08-06 18:07:37)
IE nie zna wielu atrybutów. Nawet IE7, podobno, w wersji BETA 1 zamiast mieć naprawione poprawne wyświetlanie kodu, został dobudowany w niepotrzebne śmieci...

Ja bym sie powstrzymal od tej krytyki wersji beta.. bo to zakrawa juz na bezsensowne tepienie wszystkiego co tylko wydal MS. Nie zebym za nimi przepadal, ale ostatnio chlopaki sie troche zrefrektowali i zauwazyli, ze istnieje cos takiego jak standardy i nie wymyslaja juz tyle swoich pierdol..
Juz w becie VS 2005 widac, ze zrobili duzy krok, bo kod generowany jest w XHTML'u, a jesli chodzi o IE7, to jest to pierwsza beta, w ktorej nawet nie zajmowali sie zbytnio poprawianiem obslugi CSS, ale w 2 becie ma juz byc poprawione wiekszosc slynnych bugow IE, a w finalu mozliwie duza zgodnosc z CSS2. Sugeruje zajrzec sobie na strone www.quirksmode.org, tam w ktoryms z brzegu newsie jest napisane co nieco o wersjach beta w historii przegladarek.
Tak ze ocenianie IE7 w tej chwili jest troche nierozsadne, trzeba poczekac na finala i dopiero wtedy, jesli nie wywiaza sie ze swoich obietnic, bedzie mozna znowu po nich troszke pojezdzic smile.gif
kamiseq
no i co k nic nikt do konca nie wyjsanil:]
a ja tu zakladam kolejny temat i tez nic:-)
http://forum.php.pl/index.php?showtopic=34407
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.