Ich habe zwei Antworten für Sie.
Wenn Sie mit dem float
Modell haften mögen:
Ihr ul
Element muss die Überlauf-Eigenschaft festgelegt haben (ohne diese Eigenschaft Ihre ul
(oder jedes Element Floats), die eine Höhe nicht gegeben ist (Dies ist das erwartete Verhalten, wohlgemerkt: http://www.quirksmode.org/css/clearing.html) und wird daher standardmäßig auf eine Höhe von 0 - der Effekt wird sein, dass, wenn Sie verschiedene Hintergrundfarben für Ihre ul
/li
und Körper setzen, der Hintergrund Ihrer ul
wird nicht scheinen anzeigen).
ul {
text-align: center;
width: 300px;
overflow: auto;
}
Ihre li
Elemente benötigen Breiten Set haben, sonst - als Floats - ihre Breite wird festgelegt werden, was auch immer sie enthalten. Ich habe unten Pixel verwendet, aber Sie können auch einen Prozentwert verwenden.
li {
float: left;
margin: 5px 0 5px 0;
width: 100px;
text-align: center;
}
Verwenden Sie die display:inline-block
Eigenschaft für Ihre li Elemente (wenn die Unterstützung für ältere Browser keine Priorität). IE 7 unterstützt dies nicht, daher ist es nicht hilfreich, wenn Sie umfangreiche browserübergreifende Unterstützung benötigen, aber es erzeugt den gewünschten Effekt. Stellen Sie jedoch sicher, dass Sie alle Leerzeichen zwischen Ihren Tags </li>
und <li>
löschen Gesamtbreite und wird als Leerzeichen zwischen den Elementen angezeigt.
Ein Vorteil, dass diese Methode hat, ist, dass Sie müssen nicht wissen, oder die Breite des Behälters ul
einstellen, wenn Sie Prozentbreiten auf Ihren enthaltenen li
Elemente verwenden, erhalten Sie noch die Zentrierung kostenlos mit dem text-align Eigentum, das Sie bereits haben. Dies macht Ihr Layout sehr reaktionsschnell.
Hier Markup und CSS, die so funktioniert, ich glaube, Sie fordern:
Markup:
<ul>
<li>banana</li><li>orange</li><li>apple</li>
</ul>
CSS:
li {
display:inline-block;
margin:5px 0 5px 0;
width:33.33%;
}
ul {
text-align: center;
}
- Wenn Sie lieber das Markup halten würde in mehreren Zeilen, dann müssen Sie mit den linken und rechten Rändern Ihrer
li
Elemente in der CSS fiedeln.
- Wenn Sie
li
Elemente hinzufügen, müssen Sie die prozentuale Breite ändern, damit sie übereinstimmen (zum Beispiel mit vier li
Elementen in Ihrem Markup, müssten Sie Ihr CSS so ändern, dass es eine Breite von 25% hat).
Ich musste das 'nav'' display: table', das 'ul'' display: table-row' und das 'li'' display: table-cell' machen, dann hat alles super funktioniert. –
Ich habe es getestet (in Chrome), dann habe ich es in meine Evernote-Snippet-Bibliothek verschoben :) Danke @ FireCrakcer37, das ist ein bisschen CSS genau dort. – fusion27
Ich habe eine .distributed-navigation-Klasse mit dem obigen Code als Inhalt gemacht. Wenn ich diese Klasse verwende, überschreibe ich auch die Breite der Navigation, so dass das Element nav größer ist als es die Eltern enthält. Auf diese Weise müssen Sie das "li: first/last-child" nicht links/rechts ausrichten. Ich verstelle die Position des Navis. Zum Beispiel: 'nav {Breite: 932px; Position: relativ; links: -6px; } '. Jetzt überschreitet mein Nav die Breite des enthaltenen Elements, aber sowohl das erste als auch das letzte 'li' sind perfekt mit den linken/rechten Rändern meines Hauptblocks ausgerichtet. Jeder Artikel sieht korrekt aus. – Webdevotion