it-swarm.dev

Wie rechtfertige ich eine horizontale Liste?

Ich habe eine horizontale Navigationsleiste wie die folgende:

<ul id = "Navigation">
    <li><a href = "About.html">About</a></li>
    <li><a href = "Contact.html">Contact</a></li>
    <!-- ... -->
</ul>

Ich verwende CSS, um die Aufzählungspunkte zu entfernen und horizontal zu machen.

#Navigation li
{
    list-style-type: none;
    display: inline;
}

Ich versuche, den Text so zu rechtfertigen, dass jeder Link gleichmäßig verteilt wird, um den gesamten Platz der ul auszufüllen. Ich habe versucht, text: justify zu den Selektoren li und ul hinzuzufügen, aber sie sind immer noch linksbündig.

#Navigation
{
    text-align: justify;
}

#Navigation li
{
    list-style-type: none;
    display: inline;
    text-align: justify;
}

Dies ist merkwürdig, denn wenn ich text-align: right verwende, verhält es sich wie erwartet.

Wie kann ich die Links gleichmäßig verteilen?

41
Maxpm

Moderner Ansatz - CSS3 Flexboxes

Jetzt, da wir CSS3-Flexboxen haben, müssen Sie nicht mehr auf Tricks und Workarounds zurückgreifen, um dies zu erreichen. Glücklicherweise hat Browser-Unterstützung einen langen Weg zurückgelegt und die meisten von uns können Flexboxes einsetzen.

Setzen Sie einfach die display des übergeordneten Elements auf flex und ändern Sie dann die justify-content-Eigenschaft in space-between oder space-around , um zwischen den untergeordneten Flexbox-Elementen Platz zu schaffen. Fügen Sie dann zusätzliche Herstellerpräfixe für more browser support hinzu.

Verwendung von justify-content: space-between - (Beispiel hier) :

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.menu {
    display: flex;
    justify-content: space-between;
}
<ul class="menu">
    <li>About</li>
    <li>Contact</li>
    <li>Contact Longer Link</li>
    <li>Contact</li>
</ul>


Verwendung von justify-content: space-around - (Beispiel hier) :

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.menu {
    display: flex;
    justify-content: space-around;
}
<ul class="menu">
    <li>About</li>
    <li>Contact</li>
    <li>Contact Longer Link</li>
    <li>Contact</li>
</ul>

31
Josh Crozier

Sie müssen einen "Trick" verwenden, damit dies funktioniert.

See:http://jsfiddle.net/2kRJv/

HTML:

<ul id="Navigation">
    <li><a href="About.html">About</a></li>
    <li><a href="Contact.html">Contact</a></li>
    <!-- ... -->
    <li class="stretch"></li>
</ul>

CSS:

#Navigation
{
    list-style-type: none;
    text-align: justify;
    height: 21px;
    background: #ccc
}

#Navigation li
{
    display: inline
}
#Navigation .stretch {
    display: inline-block;
    width: 100%;

    /* if you need IE6/7 support */
    *display: inline;
    zoom: 1
}

Details zu IE6/7-Tricks: Inline-Block funktioniert nicht in Internet Explorer 7, 6

35
thirtydot

Dies kann auch mit einem Pseudoelement im Element ul erreicht werden:

ul {
    margin: 0;
    padding: 0;
    list-style-type: none;
    text-align: justify;
}

ul:after {
    content: "";
    width: 100%;
    display: inline-block;
}

li {
    display: inline;
}
24
Ben Foster

Mach einfach:

ul { width:100%; }
ul li {
  display:table-cell;
  width:1%;
}
4
jakosik

Dies könnte Ihren Bedürfnissen entsprechen:

#Navigation{
}
#Navigation li{
    list-style-type: none;
    text-align: center;
    float: left;
    width: 50%; /*if 2 <li> elements, 25% if 4...*/
}

demo: http://jsfiddle.net/KmqzQ/

4
Sparkup

HTML

<ul id="Navigation">
    <li><a href="#">The Missing Link</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Riluri</a></li>
    <li><a href="#">Contact us</a></li>
    <!-- ... -->
    <li class="stretch"></li>
</ul>

CSS

#Navigation {
    list-style-type: none;
    text-align: justify;
    height: 21px;
    background: #ccc
}

#Navigation li{
    display: inline
}

#Navigation li a {
    text-align: left;
    display:inline-block;
}

#Navigation .stretch {
    display: inline-block;
    width: 100%;

    /* if you need IE6/7 support */
    *display: inline;
    zoom: 1
}

Demo anzeigen: http://jsfiddle.net/2kRJv/392/

3
Mark

Sie müssen die <li> -Elemente trennen, ansonsten funktioniert das Rechtfertigen nicht.

For example, this:

<ul><li>test</li><li>test</li></ul>


needs to be like this:
<ul>
<li>test</li>
<li>test</li>
</ul>

oder zumindest Leerzeichen zwischen den öffnenden und schließenden <li> -Tags haben.

1

Die markierte Antwort funktioniert nicht, wenn sich ein Leerzeichen darin befindet.

Die oberste Antwort hier funktioniert mit Leerzeichen Wie kann ich ein horizontales Menü in HTML + CSS wirklich ausrichten?

0
Art S

Dieser Blog hat eine zufriedenstellend robuste Lösung. Es sind jedoch einige geringfügige Änderungen erforderlich, um eine ul/li-Navigation aufzunehmen:

#Navigation {
    width: 100%;
    padding: 0;
    text-align: justify;
    font-size: 0;
    font-size: 12px\9; /* IE 6-9 */
}
#Navigation>li {
    font-size: 12px;
    text-align: center;
    display: inline-block;
    zoom: 1;
    *display: inline; /* IE only */
}
#Navigation:after {
    content:"";
    width: 100%;
    display: inline-block;
    zoom: 1;
    *display: inline;
}

http://jsfiddle.net/mblase75/9vNBs/

0
Blazemonger