CSS: Positionierung von DIVs nebeneinader bei variabler Breite

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • CSS: Positionierung von DIVs nebeneinader bei variabler Breite

    Hi!

    Ich habe drei DIVs: content, menu1 und menu2. So soll sie auch nebeneinander auf der Seite erscheinen.
    Dabei soll immer 100% der Seite genutzt werden, der Content soll sich also strecken.

    Bis her habe ich das so gelöst: Content nimmt sich die ganze Breite, rechts daneben setzte ich per position:absolute die beiden Menus. Der Content wird durch ein padding-right dann nach rechts begrenzt, dass der immer Platz für die Menüs lässt.
    Nun habe ich das Problem, dass sich die Menus über den Content schieben, wenn den Anzeigebereich verkleiner. Hier demonstriert durch min-width. Dabei will ich erreichen, dass der Browser ab einer bestimmten Fensterbreite immer horizontal scrollt. Allerdings sollen sich die Menus nicht über den Content schieben.

    Wie kann das lösen? Dazu finde ich keine Möglichkeit, das ohne position:absolute umzusetzen.

    Hier das Beispiel:

    Quellcode

    1. <html>
    2. <head>
    3. <style type="text/css">
    4. #frame {
    5. }
    6. #content {
    7. background: #eee;
    8. padding-right: 400px;
    9. min-width: 500px;
    10. }
    11. #menu1, #menu2 {
    12. width: 200px;
    13. }
    14. #menu1 {
    15. background: #ccc;
    16. position: absolute;
    17. right: 200px;
    18. top: 0px;
    19. }
    20. #menu2 {
    21. background: #ddd;
    22. position: absolute;
    23. right: 0px;
    24. top: 0px;
    25. }
    26. </style>
    27. </head>
    28. <body>
    29. <div id="frame">
    30. <div id="content">
    31. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    32. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    33. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    34. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    35. </div>
    36. <div id="menu1">
    37. Menu 1<br>Menu 1<br>Menu 1<br>Menu 1<br>Menu 1
    38. </div>
    39. <div id="menu2">
    40. Menu 2<br>Menu 2<br>Menu 2<br>Menu 2<br>Menu 2
    41. </div>
    42. </div>
    43. </body>
    44. </html>
    Alles anzeigen
    Die Japaner glauben jetzt auch, sie könnten den Superrechner verkaufen. Das wäre
    so, als würde man einen Jumbo-Jet nehmen, vorne und hinten die Spitzen absägen,
    davon 10 Stück zusammenschweißen und als ultimativen Super-Jet verkaufen.
  • Nein, ich glaube mit dem Zentrierungsproblem hat das nichts zu tun.

    Ist es das was du willst?:

    Quellcode

    1. <html>
    2. <head>
    3. <style type="text/css">
    4. #frame {
    5. }
    6. #content {
    7. background: #eee;
    8. position: absolute;
    9. right: 400px;
    10. top: 0px;
    11. overflow: auto;
    12. }
    13. #menu1, #menu2 {
    14. width: 200px;
    15. }
    16. #menu1 {
    17. background: #ccc;
    18. position: absolute;
    19. right: 200px;
    20. top: 0px;
    21. }
    22. #menu2 {
    23. background: #ddd;
    24. position: absolute;
    25. right: 0px;
    26. top: 0px;
    27. }
    28. </style>
    29. </head>
    30. <body>
    31. <div id="frame">
    32. <div id="content">
    33. Bei normalen Text macht er natürlich einen Zeilenumbruch.
    34. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    35. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    36. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    37. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    38. Nur bei langem Text ohne Leerzeichen macht er einen Scollbalken.
    39. Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content_Content
    40. </div>
    41. <div id="menu1">
    42. Menu 1<br>Menu 1<br>Menu 1<br>Menu 1<br>Menu 1
    43. </div>
    44. <div id="menu2">
    45. Menu 2<br>Menu 2<br>Menu 2<br>Menu 2<br>Menu 2
    46. </div>
    47. </div>
    48. </body>
    49. </html>
    Alles anzeigen
  • d0nut schrieb:

    3 Spalten ;) Hinter dem Stichwort hatten wir schon einen Thread.
    Hier eine andere CSS Lösung: 3 DIVs mit CSS zentrieren

    DIVs mit fester Breite zu zentrieren ist ja nicht allzu schwer. ;) Das möchte ich auch gar nicht erreichen. :P

    Hafner schrieb:

    Nein, ich glaube mit dem Zentrierungsproblem hat das nichts zu tun.
    Ist es das was du willst?: <schnipp>

    Fast. Der Content sollte mit dem Menus zusammen aber eine Mindestbreite haben, sodass der Content (variable Breite) mindestens immer X Pixel breit ist. Wenn das Fenster kleiner wird, sollen aber zuerst die Menus aus dem Bild verschwinden, also alle drei DIVs sollen zusammen gescrollt werden.

    Hafner schrieb:

    Wenn du den Content lieber um deine Menus fließen lassen willst, solltest du dich mal mit Floatings (float: right;) beschäftigen.

    Fließen möchte ich eigentlich auch nicht. :)

    Hier mal, wie ich mir das vorstelle, ich hoffe, das macht es verständlicher.
    Alle Boxen haben genug Platz:

    Die Contentbox hat ihre min-width erreicht, die Menus verschwinden rechts aus dem Fenster:


    Generell weiss ich auch nicht, ob das überhaupt möglich ist. ;)

    Gruß
    Max123
    Die Japaner glauben jetzt auch, sie könnten den Superrechner verkaufen. Das wäre
    so, als würde man einen Jumbo-Jet nehmen, vorne und hinten die Spitzen absägen,
    davon 10 Stück zusammenschweißen und als ultimativen Super-Jet verkaufen.
  • Das Problem mit den 3 DIVs ist nicht einfach zu löasen. Lies dir den Post einmal durch, wenn du glaubst es ist so einfach. :)


    So, das sollte das sein, was du möchtest:

    Quellcode

    1. <html>
    2. <head>
    3. <style type="text/css">
    4. #frame {
    5. position: absolute;
    6. width: 100%;
    7. min-width: 900px;
    8. }
    9. #content {
    10. background: #eee;
    11. position: absolute;
    12. right: 400px;
    13. left: 0px;
    14. top: 0px;
    15. min-width: 500px;
    16. }
    17. #menu1, #menu2 {
    18. width: 200px;
    19. }
    20. #menu1 {
    21. background: #ccc;
    22. position: absolute;
    23. right: 200px;
    24. top: 0px;
    25. }
    26. #menu2 {
    27. background: #ddd;
    28. position: absolute;
    29. right: 0px;
    30. top: 0px;
    31. }
    32. </style>
    33. </head>
    34. <body>
    35. <div id="frame">
    36. <div id="content">
    37. Bei normalen Text macht er natürlich einen Zeilenumbruch.
    38. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    39. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    40. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    41. Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content Content
    42. </div>
    43. <div id="menu1">
    44. Menu 1<br>Menu 1<br>Menu 1<br>Menu 1<br>Menu 1
    45. </div>
    46. <div id="menu2">
    47. Menu 2<br>Menu 2<br>Menu 2<br>Menu 2<br>Menu 2
    48. </div>
    49. </div>
    50. </body>
    51. </html>
    Alles anzeigen
  • Ja, genau das habe ich gesucht. :)
    Danke!

    Na klar, den Content auch auf position:absolute setzen, dann gehts.

    Warum ich bei dem Scrollen so penibel bin:
    Es ist einfach unschön, wenn eine Seite total enstellt wird, sobald das Borwserfesnter zu schmal ist. Da sollte eine Webseite irgendwann einfach horizontal scrollen, ohne sich total zu verzerren, denke ich. ;)
    Die Japaner glauben jetzt auch, sie könnten den Superrechner verkaufen. Das wäre
    so, als würde man einen Jumbo-Jet nehmen, vorne und hinten die Spitzen absägen,
    davon 10 Stück zusammenschweißen und als ultimativen Super-Jet verkaufen.