2011-09-15 37 views
15

Z jakiegoś powodu nie mogę zapobiec zawijaniu UL i LI. Chcę, aby szerokość UL była dokładnie taka sama jak szerokość LI na jednej linii (bez zawijania), a jeśli UL jest szerszy niż nav-div (800px), chcę pasek przewijania w nawigacji, abym mógł przewijać LI.poziomy pasek przewijania dla ul

Próbowałem prawie wszystko z wyświetlaczem, białymi spacji, szerokości i wysokości, ale mogę go uruchomić tylko wtedy, gdy dam UL określoną szerokość. To jednak nie jest opcja, ponieważ strona jest generowana i może zawierać 1-20 LI.

Czy ktoś wie, jak ustawić pasek przewijania bez ustawiania szerokości UL?

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; 
} 

Odpowiedz

40

spróbować

ul { 
    white-space:nowrap; 
} 

li { 
    display:inline; 
} 
+4

Po prostu musiałem się pozbyć pływaka! – Michiel

+0

tak, ale zajęło mi to trochę czasu, zanim mogłem dostać się do tego, co wiesz: P .... najwyraźniej przeglądarki nie przepełnią tekstu, jeśli trafią najpierw białymi znakami ... lub coś podobnego, myślę, że i to jest true dla najnowszej wersji OS X Firefox, Safari, Chorome – j03w

+0

ustawić wyświetlanie li na blok inline też działa. –

0

Ustawiając width na <ul> do inherit można użyć overflow property ustawić zachowanie przelewowy elementu. Z wartością scroll wszystkie treści elementu będzie przewijać (w obu x i y kierunkach), jeśli wysokość i szerokość zawartości porwała że z pudełka:

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

zastrzeżenie: niesprawdzone

Would nie po prostu chcesz ustawić szerokość elementu li

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

a następnie ustawić szerokość do stałej szerokości i przelewem na UL do przewijania?

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

To spowodowałoby, że UL przewinąłbyś się, gdy twoje miny przeszły obok, powiedzmy 8, czy to jest to, o co prosisz?

3

Można użyć display: inline-block; white-space: nowrap; dla owinięcia i display: inline lub display: inline-block dla dzieci.

Tak, to będzie wyglądać następująco: http://jsfiddle.net/kizu/98cFj/

A jeśli trzeba wspierać IE dodać ten siekać w komentarzach warunkowych włączyć inline-block w niej jest:

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

okazuje się, że był to "float: left", który sprawiał mi kłopoty, zrobił UL-ową i szerokość-mniejszą - dziękuję za pomoc :) – Michiel

0

Dodaj następujący zasada:

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