mehrspaltiges Menü

Im heutigen Tutorial geht es darum, wie man so eine zwei- oder auch mehrspaltige Navigation codet, wie ihr sie hier auf dem Bild (übrigens ein Screenshot meiner PersonalSite eden-existiert.de) seht. Live und in Farbe gibt’s auch eine Demo des hier verwendeten Beispielcodes.

zweispaltiges Menü

Entgegen einer weitverbreiteten Technik sollte man für zweispaltige Menüs oder Layouts jedoch keine Tabelle einsetzen, sondern kann das auch ganz locker mit Divs und Listen realisieren. Warum Tabellen für Layoutangelegenheiten doof und böse sind, erspare ich mir an dieser Stelle mal zu erklären. ;)

Was wir brauchen, ist ein Div-Container mit zwei unsortierten Listen (ul) darin, wobei jeder Menüpunkt als ein Listenpunkt (li) angelegt wird.
Dadurch, dass wir den beiden Listen eine feste Breite sowie der linken ein float: left zuweisen, entsteht ein zweispaltiges Menü.

im HTML

Unser HTML-Code:
<div class="menu">
<ul>
<li><a href="#" title="eins">eins</a></li>
<li><a href="#" title="zwei">zwei</a></li>
</ul>
<ul>
<li><a href="#" title="drei">drei</a></li>
<li><a href="#" title="vier">vier</a></li>
</ul>
</div>

im CSS

… und im Stylesheet:
.menu {
width: 400px;
}

.linke-spalte {
width: 200px;
float: left;
}

.rechte-spalte {
width: 200px;
margin-left: 200px;
}

.menu li a {
display: block;
}

eine Extrawurst für den Internet Explorer

Damit das Ganze auch im lieben Internet Explorer vor der Version 8 funktioniert, müssen im Head-Bereich der Seite noch Conditional Comments eingefügt werden, deren Anweisungen nur von den jeweligen IE-Versionen umgesetzt werden. Eine genauere Erläuterung, was Conditional Comments sind und weshalb wir sie hier benötigen, habe ich im Artikel “der Box-Modell-Fehler” beschrieben.
<!--[if lte IE 8]>
<style type="text/css">
.menu { width: 405px; }
</style>
<![endif]-->

Styling

Nun noch etwas Kosmetik:
Einen Rahmen oder sonstiges Styling könnt ihr der Menubox verpassen, indem ihr das Div ansprecht, beispielsweise so:
.menu { width: 400px; border: 2px solid #ccc; margin: 50px; }

verwandte Beiträge

4 Gedanken zu “mehrspaltiges Menü

  1. genau so ein menü suche ich für meinen footer. werd mich mitte der woche mal dran versuchen. danke.

  2. Hi, ich denke man kann es ev. auch so lösen:
    HTML Code
    div class=”menu”
    ul
    li a href=”#” title=”eins” eins /a /li
    li a href=”#” title=”zwei” zwei /a /li
    li a href=”#” title=”drei”>drei /a /li
    li a href=”#” title=”vier”>vier /a /li
    li a href=”#” title=”fünf”>vier /a /li
    li a href=”#” title=”sechs”>vier /a /li
    /ul
    /div
    CSS
    .menu {
    width: 400px;
    }

    .menu ul li{
    /*2spaltig*/
    width: 50%;
    /*3spaltig
    width: 33%;
    */
    float: left;
    display: block;
    }

    Wegen des float:left werden die Menupunkte solange nebeneinander geschrieben bis die Breite des Div.menus nicht mehr reicht. Bei: li {width: 50%} ist das nach 2 Einträgen erreicht. Und eine neue Reihe wird begonnen.
    Die Menupunkte stehen dann so nebneinander:
    eins|zwei
    drei|vier
    fünf|sechs

    bzw. bei width:33%
    eins|zwei|drei
    vier|fünf|sechs

    Habs aber noch nicht Browserübergreifend getestet. Außerdem muss man dem Redakteur des CMS erklären dass er Reihenweise, und nicht Spaltenweise, beim Erstellen der Menueinträge denken muss :(

  3. nachtrag zum Komentar von eben: Die üblichen Sonderbehandlungen zur Behebung des Boxmodelfehlers müssen natürlich uch hier beachet werden.