horizontale Bildlaufleiste für ul

Lesezeit: 3 Minuten

Benutzeravatar von Michiel
Michael

Aus irgendeinem Grund kann ich das UL und seine LIs nicht daran hindern, sich zu verpacken. Ich möchte, dass die Breite der UL genau der Breite der LIs in einer Zeile entspricht (ohne Umbruch), und wenn die UL breiter als das Nav-Div (800 Pixel) wird, möchte ich eine Bildlaufleiste innerhalb der Nav, damit ich die LI scrollen kann.

Ich habe so ziemlich alles mit Anzeige, Leerzeichen, Breite und Höhe ausprobiert, aber ich kann es nur zum Laufen bringen, wenn ich dem UL eine bestimmte Breite gebe. Dies ist jedoch keine Option, da die Seite generiert wird und 1-20 LI’s enthalten kann.

Weiß jemand, wie man eine Bildlaufleiste erscheinen lässt, ohne die Breite des UL festzulegen?

HTML:

<div id="nav">
     <ul id="navbuttons">
          <li>Some text</li>
          <li>Some text</li>
          ...
     </ul>
</div>

CSS:

div#nav
{
    height: 100px;
    width: 800px;
    margin-left: auto;
    margin-right: auto;
}

div#nav ul li
{
    margin-right: 15px;
    float: left;
    font-size: 12px;
    list-style-type: none;
}

Versuche dies

ul {
   white-space:nowrap;
}

li {
   display:inline;
}

  • ganz einfach – musste nur den Schwimmer loswerden!

    – Michael

    16. September 2011 um 6:59 Uhr

  • Ja, aber es hat eine Weile gedauert, bis ich dazu kam, weißt du: P …. anscheinend werden Browser keinen Textüberlauf machen, wenn sie zuerst mit Leerzeichen treffen … oder so ähnlich, denke ich, und das gilt für die neuesten Version von OS X Firefox, Safari, Chorome

    – j03w

    17. September 2011 um 2:52 Uhr


  • Wenn ich dasselbe mache, indem ich “class” oder “id” verwende, funktioniert es nicht. Kann mir jemand erklären warum es nicht funktioniert?

    – Yash Vekaria

    23. April 2015 um 11:33 Uhr

  • @YashVekaria, denken Sie daran, eine jsfiddle aufzustellen, damit wir sehen können, warum es für Sie nicht funktioniert?

    – j03w

    24. April 2015 um 2:11 Uhr

Benutzeravatar von kizu
Kizu

Sie können verwenden display: inline-block; white-space: nowrap; für die Verpackung u display: inline oder display: inline-block für die Kinder.

Das würde also so aussehen: http://jsfiddle.net/kizu/98cFj/

.navbuttons {
    display: inline-block;
    overflow: auto;
    overflow-y: hidden;
    max-width: 100%;
    margin: 0 0 1em;
    white-space: nowrap;
    background: #AAA;
}

.navbuttons LI {
    display: inline-block;
    vertical-align: top;
}

Und wenn Sie IE unterstützen müssen, fügen Sie diesen Hack in bedingte Kommentare hinzu, um ihn zu aktivieren inline-blocksteht drin:

.navbuttons,
.navbuttons LI {
    display: inline;
    zoom: 1;
}

  • stellt sich heraus, dass es das war float: left Das hat mir Probleme bereitet, es hat die UL-Höhe und -Breite weniger gemacht – danke für Ihre Hilfe 🙂

    – Michael

    16. September 2011 um 6:58 Uhr

  • Für mich hinzufügen vertical-align: top; hat es mir angetan. Vielen Dank.

    – jyoseph

    20. Januar um 22:21 Uhr

Achtung: Ungetestet

Möchten Sie nicht nur eine Breite für das li-Element festlegen?

div#nav ul li {    
   margin-right: 15px;     
   float: left;     
   font-size: 12px;     
   list-style-type: none;
   width: 100px;
}

Und dann die Breite auf eine feste Breite setzen und auf dem UL überlaufen, um zu scrollen?

div#nav ul {
    width: 800px;
    overflow: scroll;
}   

Dies würde dazu führen, dass Sie UL scrollen, wenn Ihre Lis über 8 hinausgehen. Ist es das, wonach Sie suchen?

Durch die Einstellung der width auf der <ul> zu inherit du kannst den … benutzen overflow Eigentum um das Überlaufverhalten des Elements einzustellen. Mit dem Wert scrollwird der gesamte Inhalt des Elements (sowohl in x- als auch in y-Richtung) gescrollt, wenn die Höhe und die Breite des Inhalts die der Box überschreiten:

div#nav ul
{
    overflow: scroll;
    width: inherit;
    height: inherit;
}

Fügen Sie die folgende Regel hinzu:

div#nav ul {
   overflow-x: hidden;
   overflow-y: scroll;
   white-space: nowrap;
}

1433880cookie-checkhorizontale Bildlaufleiste für ul

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy