Um div-Container oder allgemeiner gesagt alle Blockelemente nebeneinander, also dem normalen Textfluß folgend, darzustellen, kann man sie z.B. mit float: left; formatieren. Dies funktioniert solange zufriedenstellend wie alle "Spalten" (technisch oder erzwungen) die gleiche Höhe haben. Eine "echte" Spaltenunterstützung wird es wohl erst mit CSS 3 geben und da alle Browser der aktuellen generation "nur" CSS 2 interpretieren (und auch das nicht immer durchgängig und korrekt) wird es wohl noch eine Weile dauern, bis dieses Feature konkret nutzbar ist.
Den Versuch eine Tabelle mit über- und nebeneinander positionierten div-Containern darstellen zu wollen sollte man allerdings lassen, außer man bewegt sich gerne am Rande des Wahnsinns und hat noch zu wenig graue Haare. Für die Darstellung einer Tabelle gibt es ein sehr nettes Tag: **<table>**
Also meines Erachtens sollte man eine Tabelle, sprich: das table-tag nur dann verwenden wenn man tatsächlich auch semantisch eine Tabelle darstellen möchte. Ist dies nicht der Fall kann man auf jeden Fall in jedem modernen Browser mit float arbeiten. Hierbei ist darauf zu achten, daß die einzelnen (nebeneinanderstehenden Boxen) eine feste oder maximale Breitenangabe haben die in Summe kleiner oder gleich der darüberliegenden Box ist. Wird die Summe größer, landet das zuletzt eingefügte DIV in der nächsten Zeile. Ich meine als sowas wie: <div>text text text text</div> <div style="width:150px"> <div style="float:left;width:50px">...</div> <div style="float:left;width:50px">...</div> <div style="float:left;width:50px">...</div> </div> <div style="clear:left">text text text text</div>
In deinem Falle ist wohl eine Liste im Bezug auf die Semantik garnicht so unangebracht, dafür gibt es auch mehrere einfache Umsetzungsmöglichkeiten:
#bsp1 ul { list-style: none; } #bsp1 li { float: left; width: 100px; } #bsp1 p { clear: left; } #bsp2 ul { list-style: none; } #bsp2 li { display: inline-block; width: 100px; }
<div id="bsp1"> <p>Ich bin Text</p> <ul> <li>Spalte 1</li> <li>Spalte 2</li> <li>Spalte 3</li> </ul> <p>Ich bin Text</p> </div> <div id="bsp2"> <p>Ich bin Text</p> <ul> <li>Spalte 1</li> <li>Spalte 2</li> <li>Spalte 3</li> </ul> <p>Ich bin Text</p> </div>
Im Verbindung mit dem Link von kris könntest du zudem auch sauber clearen, ohne zwingend ein "nachfolgendes Element" haben zu müssen. So sehen die beiden Codebeispiele im Browser (Firefox) aus:
Das mit dem Tag zur Table wurde wohl abgeschnitten, könntest du das vielleicht als Kommentar noch hinzufügen?