Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML]Rozszerzanie się komórki po wpływem treści
Forum PHP.pl > Forum > Przedszkole
simonX
Tak jak na górze zawsze mam z tym problem, mam taki układ strony i tylko komórka w miejscu tekst ma się rozszerzać natomiast menu ma pozostać nie tknięte, ma ktoś jakiś pomysł?

qrzysztof
Nie bardzo wiadomo o co chodzi. Komórka TREŚĆ ma ograniczone wymiary (na rysunku nie ma) i ma się rozszerzać (w którą stronę). MENU ma zostać nienaruszone, TOP domyślam się też. Troszkę jaśniej jeśli można.
simonX
No tak, ponieważ strona oparta jest o tabelke, wieć chcę żeby tylko swoje rozmiary zmieniała tylko ta jedna komórka, właściwie to zeby się dopasowywała do ilości treści na stronie.
qrzysztof
Najlepiej zrób to na divach. Tabelki nie są do tego celu. Przy divach ustawisz tylko odpowiednie overflow i będzie hulać.
bemol
popieram qrzysztof, zrób na divach, ale jeśli już koniecznie chcesz mieć tabelki to podziel menu na dwie komórki, tresci ustaw
  1. rowspan="2"

i tę komórkę, która będzie pod menu daj nie widoczną. (empty-cells: hide;)
simonX
Tez próbowałem ale o to chodzi ze jak tne laya w PS-ie i mi dla kazdego diva ustawia pozycjonowanie absolutne i jest lipa, według swojej rozdzielczosci zrobie dobrze ale dla kogos kto ma inna rozdzielczosc monitora bedzie sie zle strona wyświtlała.
bemol
to zmień absolutne i juz.
menu i tresc daj
Kod
display:inline;
float:left; //dla menu
float:right; //dla tresci

i problem z głowy
simonX
;/ troche dziwnie chyba tak powinno być jak już coś?


  1.  
  2. #menu{
  3. display:inline;
  4. float:left;
  5.  
  6. }
  7.  
  8. #tresc{
  9. display:inline;
  10. float:right;
  11.  
  12. }
  13.  
  14.  
mortus
Napisz, czy strona ma stałą szerokość i czy ma być wyśrodkowana, czy niekoniecznie? Dobrze by było gdybyś również pokazał layout.
simonX
Lay jest w rozdzielczości 950X1000 i chcę właśnie żeby była zawsze wyśrodkowana.
mortus
No to co za problem:
  1. <div id="top" style="margin: 0 auto; width: 950px; height: 50px; overflow: hidden; border: 1px solid #ccc;">LOGO ITP.</div>
  2. <div id="page" style="margin: 0 auto; width: 950px; min-height: 950px; overflow: hidden;">
  3. <div id="menu" style="width: 250px; height: 100%; border: 1px solid #666; float: left;">MENU</div>
  4. <div id="content" style="width: 695px; height: 100%; border: 1px solid #666; float: right;">TREŚĆ</div>
  5. <div style="clear: both;"></div>
  6. </div>

Pocięty layout możesz wstawić jako background dla div-ów. Oczywiście wysokości topu, menu i treści musisz sobie dopasować do Twojego layoutu. No i osobiście umieściłbym style w pliku css.
grassmen
Na tabelkach:
  1. <table border="1" width="950" height="1000">
  2. <tr><td>TOP</td><tr>
  3. <tr><td>
  4. <table border="1">
  5. <tr><td valign="top">MENU</td>
  6. <td>tresc</td>
  7. </tr></table>
  8. </td></tr>
simonX
Cytat(mortus @ 24.02.2010, 10:07:55 ) *
No to co za problem:[HTML] pobierz, plaintext
  1. <div id="top" style="margin: 0 auto; width: 950px; height: 50px; overflow: hidden; border: 1px solid #ccc;">LOGO ITP.</div>
  2. <div id="page" style="margin: 0 auto; width: 950px; min-height: 950px; overflow: hidden;">
  3. <div id="menu" style="width: 250px; height: 100%; border: 1px solid #666; float: left;">MENU</div>
  4. <div id="content" style="width: 695px; height: 100%; border: 1px solid #666; float: right;">TREŚĆ</div>
  5. <div style="clear: both;"></div>
  6. </div>
[HTML] pobierz, plaintext
Pocięty layout możesz wstawić jako background dla div-ów. Oczywiście wysokości topu, menu i treści musisz sobie dopasować do Twojego layoutu. No i osobiście umieściłbym style w pliku css.



Myslę że twój pomysł jest niezły, tylko mam problem mam kilka elementów w poziomie pociętych chce zeby 4 divy byly obok siebie stosuje atrybut float, ale jakoś nie działa możesz mi sprawdzić



  1. <div id="top" style="margin: 0 auto; width: 950px; height: 230px; overflow: hidden; border: 1px solid black;">top </div>
  2. <div id="page" style="margin: 0 auto;width: 950px; height: 770; overflow:hidden; border: 1px solid black;">
  3. <div id="menu_top" style="margin-left: 0px auto; width: 950px; height: 44px; overflow: hidden;border: 1px solid black; "></div>
  4. <div id="menu_top" style="margin-left: 0px auto; width: 950px; height: 17px; overflow: hidden;border: 1px solid red; ">asd</div>
  5. <div id="menu_top" style="width: 148px; height: 170px;float: left;border: 1px solid red;">lewa
  6. <div id="menu_top" style="float: right;width: 222px; height: 170px;border: 1px solid red; ">srodkowa komorka</div>
  7. <div id="menu_top" style="float: right;width: 222px; height: 170px;border: 1px solid red; ">prawa komorka</div>
  8.  
  9. </div>
  10.  
  11.  
  12.  
  13. </div>
  14.  
mortus
Przede wszystkim nie możesz mieć pięciu div-ów z takim samym parametrem id, bowiem parametr id to nic innego jak unikalny identyfikator elementu (tagu) html. Nazwij je zatem inaczej i sprecyzuj, które elementy (po id) mają być obok siebie. A najlepiej zaznacz na layoucie linie cięcia, wrzuć obraz na jakiś serwer i zaprezentuj tutaj.
simonX
Tak wiem ze id jest unikalny tutaj po prostu tak na chypcika robiłem, udało mi się zrobić ale i tak mam problem trzy bloki są obok siebie ale 4 już nie sad.gif


  1. <div id="index2-01">top </div>
  2. <div id="page" style="margin: 0 auto;width: 950px; height: 770; overflow:hidden; border: 1px solid black;">
  3. <div id="menu_top" style="margin-left: 0px auto; width: 950px; height: 44px; overflow: hidden;border: 1px solid black; "></div>
  4. <div id="menu_top" style="margin-left: 0px auto; width: 950px; height: 17px;overflow: hidden; border: 1px solid red; ">asd</div>
  5. <div id="wysiwtlanie" style="width: 950px; height: 170px;overflow:hidden;border: 1px solid red;">
  6. <div id="1" style="float: left;width: 148px; height: 170px;border: 1px solid blue; ">1</div>
  7. <div id="2" style="float: left;width: 222px; height: 170px;border: 1px solid blue; ">2</div>
  8. <div id="3" style="float: left;width: 431px; height: 170px;border: 1px solid blue; ">3</div>
  9. <div id="4" style="float: left;width: 148px; height: 170px;border: 1px solid blue; ">4</div>
  10.  
  11. </div>
  12. </div>
  13.  
  14.  
mortus
Prosta matematyka. Policzmy szerokość: 148px + 222px + 431px + 148px = 949px, ale do tego mamy jeszcze 4*2px z obramowania, czyli w sumie 957px. Bloki są za szerokie i dlatego ostatni spada niżej. Dlatego od razu musisz sobie odpowiedzieć na pytanie, czy div-y będą miały obramowania, czy też nie. Dopiero wtedy będziesz mógł wszystko ustawić tak, jak trzeba. Ważną rzeczą jest również umieszczenie
  1. <div style="clear: both;"></div>
po wszystkich elementach, które mają w stylu ustawiony float. Taki kod zabezpieczy Cię przed opływaniem treści pod tymi czterema divami, w przeciwnym przypadku to co będzie niżej może nachodzić na te cztery div-y.
EDIT:
Warto się też zastanowić, czy layoutu nie można pociąć inaczej, i czy potrzeba tylu div-ów.
simonX
Wszystko udało mi się zrobić tylko mam jeden problem zrobiłem jednego diva wewnątrz którego umieściłem jeszcze dwa jednego na menu drugiego na treść i ustawiłem kolor dla tego nadrzędnego czyli ten sam kolor będzie dla tych dwóch wewnętrznych tylko jest taki problem że pod FF nie działa ;/ ale w edytorze czy IE a nawet w operze wszystko jest OK nie co jest źle może ktoś wpadnie.

  1. <div id="cialo" style="width:949;height:auto;background-color:#41566b;">
  2. <div id="index-09">MENU</div>
  3. <div id="index-09">TRESC</div>
  4. </div>
  5.  
  6.  
  7.  
  8.  

mortus
Akurat ten fragment działa w FF.

Pokaż cały kod!
simonX
nie no nie działa tongue.gif mają być bloki obok siebie a nie pod spodem tak jak mi wcześniej podawałeś :|
mortus
Jeśli bloki mają być obok siebie, to trzeba zrobić dwie rzeczy:
  1. <div id="cialo" style="width:949;height:auto;background-color:#41566b;">
  2. <div id="index-09" style="float: left; width: xxxpx;">MENU</div>
  3. <div id="index-10" style="float: left; width: xxxpx;>TRESC</div>
  4. <div style="clear: both;"></div>
  5. </div>
Div-y muszą mieć określoną szerokość zależną od układu całej strony. Najlepiej wklej cały kod!
simonX
okiej już zrobiłem jeszcze mam takie pytanie a nie chce zakładać nowego tematu mam dwa menu jedno poziome i drugie pionowe i dla tych menu chce zrobić oddzielne style jak to mogę zrobić bo jak daje identyfikator to i tak nie dziala?
mortus
Na przykład:
  1. <div id="menupoziome">
  2. <ul>
  3. <li><a href="#">link</a></li>
  4. ...
  5. </ul>
  6. </div>
  7. <div id="menupionowe">
  8. <ul class="klasa">
  9. <li><a href="#">link</a></li>
  10. ...
  11. </ul>
  12. </div>

No a do tego css:
Kod
#menupoziome {
}
#menupoziome ul {
}
#menupoziome ul li {
}
#menupionowe {
}
#menupionowe ul.klasa {
}
#menupionowe ul {
}

#menupionowe ul li {
}
simonX
No ok ale jak przypisać do tego pseudoelementy link, visited itp?
mortus
Kod
#menupoziome {
}
#menupoziome ul {
}
#menupoziome ul li {
}
#menupoziome ul li a {
}
#menupoziome ul li a:hover {
}
#menupoziome ul li a:visited {
}
#menupionowe {
}
#menupionowe ul.klasa {
}
#menupionowe ul {
}
#menupionowe ul li {
}
#menupionowe ul li a {
}
#menupionowe ul li a:hover {
}
#menupionowe ul li a:visited{
}
simonX
Dzięki ziomuś dużo mi pomogłeś dzisiaj więc masz ode mnie plusika, żeby wszyscy tak na tym forum pomagali to by było dobrze, a co do tych stylów czemu taka drabinka jest nie można by było od razu podać


  1. #menupionowe ul li a:visited {
  2.  
  3. }
  4. #menupionowe ul li a:hover {
  5.  
  6. }
  7. #menupionowe ul li a:link {
  8.  
  9. }
mortus
Bo zapis '#menupoziome' to styl dla div-a o id=menupoziome, natomiast zapis '#menupoziome ul' to styl dla listy ul, która znajduje się w tym divie. Z kolei zapis '#menupoziome ul li' to styl dla elementów tej listy. Twój kod ustawi nam tylko styl dla odnośników, które znajdują się de facto w elemencie listy (li).
simonX
Mam znowu problem tongue.gif Mianowicie udalo mi się zrobić style dla IE teraz pracuje nad FF ale ten układ bloków źle się wyświetla pod tą przeglądarką(treść pod menu).
mortus
Zapodaj cały kod layoutu i css.
simonX
  1. <div id="index-01">top </div>
  2. <div id="szkielet" style="margin: 0 auto;width: 950px; height: 770; border: 0px solid black;">
  3. <div id="index-03" align="left"><ul><li><a href="#">Strona Główna</a></li>&nbsp;|&nbsp;<li><a href="#">Cennik</a></li>&nbsp;|&nbsp; <li><a href="#"> Sprzęt w AG</a></li>&nbsp;|&nbsp;<li><a href="#">Linki</a></li>&nbsp;|&nbsp;<li><a href="#">Kontakt</a></li></ul></div>
  4. <div id="index-04">aktualnosci</div>
  5. <div id="body" style="width: 949px; height: 170px;overflow:hidden;border: 0px solid red;">
  6. <div id="index-05"><img src="pgnig.png"></div>
  7. <div id="index-06"><a href="random.php"></a></div>
  8. <div id="index-07"><iframe width="431" height="170" frameborder="0" src="odczyt.php" scrolling="no"></iframe></div>
  9. <div id="index-08"></div>
  10.  
  11. </div><!--to jest do akutalnosci-->
  12.  
  13.  
  14. <div id="cialo" style="width:949;height:auto;background-color:#41566b;">
  15.  
  16.  
  17.  
  18. <div id="menupionowe" style="padding-top:75px;width: 250px; height: 100%; border: 0px solid #666; float: left;">
  19. <div class="naglowek">Nawigacja:</div>
  20. <ul>
  21. <li><a href="#">1</a></li>
  22. <li><a href="#">2</a></li>
  23. <li><a href="#">3</a></li>
  24. <li><a href="#">4</a></li>
  25. <li><a href="#">5</a></li>
  26. <li><a href="#">6</a></li>
  27. <li><a href="#">7</a></li>
  28. <li><a href="#">8</a></li><br><br>
  29. </ul>
  30. <div class="naglowek">Sezon:</div>
  31. <ul>
  32. <li>2002</li>
  33. <li>2003</li>
  34. <li>2004</li>
  35. <li>2005</li>
  36. <li>2006</li>
  37. </ul>
  38. </div><!--menu-->
  39.  
  40. <div id="index-10" style="width: 695px; height: 100%; border: 0px solid #666; float: right;"><img src="images/pionowy.gif" width="1px" height="100%" style="float:left;">
  41.  
  42. TRESC
  43.  
  44. </div>
  45.  
  46. <div style="clear: both;"></div>
  47. </div><br>
  48.  
  49. </body>
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
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.