Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: layout na div-ach
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
batman
Witam

Za długo już patrzę w kod i nie wiem co się dzieje. Jeśli wpiszę w jednego div-a dużo tektu, następuje jego rozszerzenie wraz z tłem - jest to efekt jak najbardziej pożądany. Jednak pozostałe div-y ni jak nie chcą się rozciągnąć. Możecie zerknąć na kod i ocenić co źle zrobiłem ?

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <style type="text/css">
  3. #main {
  4. margin-top: 10px;
  5. margin-bottom: 10px;
  6. height: 10%;
  7. width: 800px;
  8. border: 1px solid #707070;
  9. }
  10.  
  11. #head {
  12. background-color: #DBDBDB;
  13. width: 800px;
  14. border: 1px solid #707070;
  15. }
  16.  
  17. #foot {
  18. background-color: #DBDBDB;
  19. width: 800px;
  20. border: 1px solid #707070;
  21. }
  22.  
  23. #box_left {
  24. float:left;
  25. height: 100%;
  26. width:650px;
  27. border: 0px none;
  28. }
  29.  
  30. #right {
  31. float:right;
  32. height: 100%;
  33. width:148px;
  34. border: 0px none;
  35. border-left: 1px solid #707070;
  36. background-color: #DBDBDB;
  37. }
  38.  
  39. #left {
  40. float: left;
  41. border-right: 1px solid #707070;
  42. width: 150px;
  43. height:100%;
  44. background-color: #DBDBDB;
  45. }
  46.  
  47. #center {
  48. float: right;
  49. width: 499px;
  50. height:100%;
  51. background-color: #EEEEEE;
  52. }
  53.  
  54. #wrap {
  55. }
  56.  
  57. </head>
  58.  
  59. <div id="head"><h3>text</h3></div>
  60. <div id="main">
  61. <div id="box_left">
  62. <div id="left">
  63. <p>aaa</p>
  64. <p>bbb</p>
  65. <p>ccc</p>
  66. <p>ddd</p>
  67. <p>eee</p>
  68. </div>
  69. <div id="center">vvvvvvvvvvv</div>
  70. </div>
  71. <div id="right"> </div>
  72. <div style="clear: both"></div>
  73. </div>
  74. <div id="foot">text</div>
  75.  
  76. </body>
  77. </html>


Efekt jest taki sam w IE, FF i Operze. Dodam jeszcze, iż użycie JavaScript odpada.
babejsza
Możesz tak:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3.  
  4. <style type="text/css">
  5. #head {
  6. background-color: #DBDBDB;
  7. width: 800px;
  8. border: 1px solid #707070;
  9. }
  10.  
  11. #main {
  12. margin: 10px 0 10px 0;
  13. width: 800px;
  14. border: 1px solid #707070;
  15. background-color: #DBDBDB;
  16. }
  17.  
  18. #main br {clear: both;}
  19.  
  20. #left {
  21. float: left;
  22. width: 150px;
  23. }
  24.  
  25. #center {
  26. float: right;
  27. width: 498px;
  28. background-color: #EEEEEE;
  29. border-left: 1px solid #707070;
  30. border-right: 1px solid #707070;
  31. }
  32.  
  33. #right {
  34. float: right;
  35. width: 150px;
  36. }
  37.  
  38. #foot {
  39. background-color: #DBDBDB;
  40. width: 800px;
  41. border: 1px solid #707070;
  42. }
  43. </head>
  44.  
  45.  
  46.  
  47. <div id="head"><h1>Nagłowek</h1></div>
  48.  
  49. <div id="main">
  50. <div id="left">aaa</div>
  51. <div id="right">aaa</div>
  52. <div id="center">aaa</div>
  53. <br />
  54. </div>
  55.  
  56. <div id="foot">Stopka</div>
  57.  
  58. </body>
  59. </html>


Ale to pod warunkiem, że "center" będzie tym, który zawsze będzie najdłuższy. W innym przypadku trzeba będzie skorzystać z grafiki tła.
batman
Nietety podane rozwiązanie nie działa. Ani w FF ani w IE. W Operze nawet nie sprawdzałem.
babejsza
Chyba żartujesz smile.gif Działa w IE6, FF 1.5.0.7 oraz w Operze 9.02. Nie wiem na czym sprawdzałeś, ale zrób to jeszcze raz smile.gif. I powtarzam, to zadziała tylko w przypadku gdy blok #center będzie najwyższy.

//Edit

Jeżeli jednak będziesz potrzebował uniwersalnego rozwiązania, to tak jak napisałem wcześniej będziesz musiał posiłkować się grafiką. Więcej tutaj: Faux columns. Chyba, że ktoś wie jak zrobić, aby divy rozciągały się względem siebie bez wykorzystania grafik, ale nie wydaje mi się. Oczwiście mówię tu o rozwiązaniu działającym we wszystkich przeglądarkach winksmiley.jpg.
php programmer
Cytat
zadziała tylko w przypadku gdy blok #center będzie najwyższy.

Nie no sory, skoro nie ma prostego rozwiazania (o ile wogóle jest)
na ten prosty problem, to w moich oczach mit łatwości używania DIV'ów
do tworzenia bloków, boleśnie upadł!

Mam nadzieje, że
może ktoś uratuje honor, tych co uważają inaczej smile.gif
batman
@babejsza
Zwracam honor. Działa. Miałem starą wersję w cache-u.
Niemniej jednak nie jest to dla mnie satysfakcjonujące rozwiązanie.

@php programmer
Muszę przyznać Ci rację. Do tej pory pracowałem na divach ułożonych w dwie kolumny i nie miałem najmniejszych problemów. Ale by tak się nakombinować do dodania trzeciej kolumny, to już lekka przesada.
babejsza
Jest prosty sposób. Przedstawiono go w linku, który podałem. Dodatkowo są metody, aby nie robić tego za pomocą grafiki, ale niestety badzIEwie ich nie obsługuje. Poza tym nie widzę innego rozwiązania niż stosowanie elementów blokowych do tworzenia ... bloków. Chyba, że tabele nazywasz blokiem biggrin.gif.

//edit

@batman
Które rozwiązanie nie jest satysfakcjonujące? Moje czy z A List Apart? Chyba, że oba smile.gif. W takim przypadku zostaną Ci już właściwie tylko tabele. Ale nie polecam tego smile.gif.
nospor
posty OT zostaly przeniesione do wlasciwszego tematu:
http://forum.php.pl/index.php?showtopic=48750&st=120
tam jest dyskusja na ten temat
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.