Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [css] layout HTML Table -> div css
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
mINA87
Witam!
Być może mam dosyć głupie pytanie i oczywiste dla wielu z was, ale niestety jestem n00b jeśli chodzi o formatowanie CSS i ciągle żyję w świecie <table> tongue.gif Mój problem przedstawia się następująco - potrzebuję stworzyć layout analogiczny do takiego :
Kod
<table width="100%">
<tr>
    <td width="200"> Left </td>
    <td width="5"> Fixed padding </td>
    <td width="*"> Main content </td>
</tr>
<tr>
    <td colspan="3"> Footer </td>
</tr>
</table>

reprezentowany jednak przez div'y i wypozycjonowany css'em. Problem jest taki, że jeśli komórki left lub content wypozycjonuje w sposób absolutny, to ich wielkość nie zostanie uwzględniona przy renderowaniu strony - spowoduje to, że div footer będzie wypozycjonowany tylko względem drugiej części i prawdopodobnie "wjedzie" na pierwszą. Niestety wielkość Left i Main content zmienia się w sposób dynamiczny i nie mogę jednoznacznie określić która z komórek jest w danym momencie wyższa. Udało mi się to jakoś rozwiązać wykorzystując float (bodajże na elemencie Left) i wszystko byłoby fajnie, gdyby nie IE... Co najdziwniejsze - pod Operą i FF wszystko było ok, pod IE też... Do czasu.. Gdy w komórce Main content znalazła się jakakolwiek tabelka, to strona rozjeżdżała się totalnie, zamiast renderować tabelkę w Main content obok Left, IE (wersja 6.0 i starsze) zostawiał to miejsce puste i renderował tabelkę na wysokości kończącej Left.. Bardzo dziwnie to wyglądało i niestety na chwilę obecną nie jestem w stanie odtworzyć tej sytuacji, bo nie pamiętam już tego kodu. Czy macie może jakieś inne propozycje? Czy da się wypozycjonować elementy absolutnie tak by przy renderingu strony ich wielkości zostały uwzględnione w DOMie (pomijając pozycjonowanie relatywne, które mnie niestety nie urządza)? Taka sytuacja ma chyba miejsce w lay'u Monobook z Wikipedii, jednak trochę się pogubiłem i nie potrafię odtworzyć sytuacji stamtąd.
Pozdrowionka i z góry fnx za zainteresowanie.
babejsza
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html lang="pl">
  3.  
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. #left {float: left; width: 200px; padding: 0 5px 0 0; background: red}
  8. #right {background: green; margin: 0 0 0 205px}
  9. #footer {background: blue;}
  10. </style>
  11. </head>
  12.  
  13. <body>
  14. <div id="conteiner">
  15.  
  16. <div id="left">left</div>
  17. <div id="right">right<br><br></div>
  18. </div>
  19. <div id="footer">footer</div>
  20.  
  21. </body>
  22.  
  23. </html>


Jakoś nie miałem siły przeczytać całego Twojego pytania, ale chyba o to Ci chodziło. Jeżeli nie to napisz jeszcze raz, ale postaraj się lepiej zobrazować problem.
mINA87
Dzięki za odpowiedź, ale zobacz proszę jak taki kod renderuje się w IE - właśnie to jest ta problematyczna sytuacja o której mówiłem:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html lang="pl">
  3.  
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. #left {float: left; width: 200px; padding: 0 5px 0 0; background: red}
  8. #right {background: green; margin: 0 0 0 205px}
  9. #footer {background: blue;}
  10. </style>
  11. </head>
  12.  
  13. <body>
  14. <div id="conteiner">
  15.  
  16. <div id="left">left
  17. <br/> line 2
  18. <br/> line 3
  19. <br/> line 4
  20. <br/> line 5
  21. <br/> line 6
  22. </div>
  23. <div id="right">right<br><br>
  24. <table width="100%" valign="top">
  25. <tr><td width="20%">asg</td><td width="20%">ds</td><td width="30%"></td><td></td></tr>
  26. <tr><td width="20%">asg</td><td width="20%">ds</td><td width="30%"></td><td></td></tr>
  27. <tr><td width="20%">asg</td><td width="20%">ds</td><td width="30%"></td><td></td></tr>
  28. <tr><td width="20%">asg</td><td width="20%">ds</td><td width="30%"></td><td></td></tr>
  29. <tr><td width="20%">asg</td><td width="20%">ds</td><td width="30%"></td><td></td></tr>
  30. <tr><td width="20%">asg</td><td width="20%">ds</td><td width="30%"></td><td></td></tr>
  31. </div>
  32. </div>
  33. <div id="footer">footer</div>
  34.  
  35. </body>
  36.  
  37. </html>

babejsza
Jakbyś spojrzał do validatora to byś wiedział co jest nie tak ....


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html lang="pl">
  3.  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <style type="text/css">
  6. #left {float: left; width: 200px; padding: 0 5px 0 0; background: red}
  7. #right {background: green; margin: 0 0 0 205px}
  8. #right table {margin: 20px 0 0 0; width: 99%}
  9. #right table td {width: 20px}
  10.  
  11. #footer {background: blue;}
  12. </head>
  13.  
  14.  
  15. <div id="conteiner">
  16. <div id="left">
  17. left
  18. <ul>
  19. <li>line 2</li>
  20. <li>line 3</li>
  21. <li>line 4</li>
  22. <li>line 5</li>
  23. <li>line 6</li>
  24. </ul>
  25. </div>
  26. <div id="right">
  27. right
  28. <table cellpadding="0" cellspacing="0">
  29. <tr>
  30. <td>asg</td>
  31. <td class="width30">ds</td>
  32. <td></td>
  33. <td></td>
  34. </tr>
  35. <tr>
  36. <td>asg</td>
  37. <td>ds</td>
  38. <td></td>
  39. <td></td>
  40. </tr>
  41. <tr>
  42. <td>asg</td>
  43. <td>ds</td>
  44. <td></td>
  45. <td></td>
  46. </tr>
  47. <tr>
  48. <td>asg</td>
  49. <td>ds</td>
  50. <td></td>
  51. <td></td>
  52. </tr>
  53. <tr>
  54. <td>asg</td>
  55. <td>ds</td>
  56. <td></td>
  57. <td></td>
  58. </tr>
  59. <tr>
  60. <td>asg</td>
  61. <td>ds</td>
  62. <td></td>
  63. <td></td>
  64. </tr>
  65. </table>
  66. </div>
  67. </div>
  68. <div id="footer">
  69. footer</div>
  70.  
  71. </body>
  72.  
  73. </html>
mINA87
Dzięki za zainteresowanie. Pierwsze co robiłem to rzuciłem kod do validatora jak pierwszy raz napotkałem na ten problem i wydawało mi się że wszystkie "większe" błędy poprawiłem. Ponadto wydaje mi się, że w bardzo okrojonym przypadku - same tagi, bez żadnych parametrów też się sypało. Aktualnie mam pod ręką tylko IE7 który renderuje kod poprawnie, więc zapytam czy masz problemy z pierwszym kodem, a po przerzuceniu się na formatowanie wielkości komórek w CSSie jest ok? Dzięki i pozdro.
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.