2013-09-26 25 views
6

Jestem od pewnego czasu zdziwiony. Oto, co mam teraz:Przedłuż ostatnie li do pozostałej szerokości ul?

------------------------------------------------------------------------------- 
|     |     |      | 
|  Item 1  |  Item 2  |  Last item  | 
|     |     |      | 
------------------------------------------------------------------------------- 

Tam ostatni li zajmuje tylko część ul. Potrzebuję go wyglądać tak:

------------------------------------------------------------------------------- 
|     |     |          | 
|  Item 1  |  Item 2  |    Last item    | 
|     |     |          | 
------------------------------------------------------------------------------- 

Nie mogę używać JavaScript (lub Jquery). Nie chcę ustawiać szerokości każdego li, ponieważ rozmiar tekstu może się różnić i nie wiem, ile będzie tam li. Mogę mieć 5 lub 3. "

Jak to zrobić? Dzięki.

Oto jsfiddle z niektórymi z mojego kodu. Potrzebuję jaśniejszego koloru, żeby rozwinąć resztę ul. JSFIDDLE

+0

można napisać mały sprawdzian korzystając jsfiddle plz? –

+0

Co masz na myśli? –

+1

Skopiuj i wklej odpowiednie znaczniki, które dotychczas zawierałeś w pytaniu, a jeśli to możliwe, skorzystaj z witryny takiej jak http://jsfiddle.net, aby dostarczyć wersję demonstracyjną na żywo. – JJJ

Odpowiedz

20

można unosić się wszystkie elementy, ale ostatni do lewo.

Model pudełkowy ostatniego elementu rozszerzy się następnie za tymi pływającymi elementami listy (nawet jeśli zawartość nie ma). overflow:hidden uniemożliwi to zachowanie; Model pudełkowy rozpocznie się, gdy ostatni element pływający się zakończy, tak jakby pływające przedmioty nadal znajdowały się w naturalnym strumieniu strony.

ul, li{ 
 
    margin:0; 
 
    padding:0; 
 
    
 
    list-style-type:none; 
 
} 
 

 
ul li{ 
 
    display: block; 
 
    float:left; 
 
} 
 

 
ul li:last-child{ 
 
    background-color: #ddd; 
 

 
    float:none; 
 
    overflow:hidden; 
 
}
<ul> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>I will extend to the end of the page.. No matter how far. I will also not drop beneath my previous items, even if the text in here requires me to span over multiple lines.</li>  
 
</ul>

zmienił swojego nowo dodanego JSFiddle:

JSFiddle

+0

Dzięki. Czy to zadziała, jeśli będę miał inną ul na boku a ... jak jakiś rodzaj ticker? –

+0

Tak, możesz to zrobić – George

+0

Dzięki za rozwiązanie. To może być osobne pytanie, ale dlaczego to nie działa, jeśli zastosuję klasę css do ostatniego elementu 'li'? – fbynite

1
ul>li:last-of-type {width:whatever} 

więc dwa Li przed ostatnia będzie unosić się: w lewo i mieć 20% na obu i ostatnia może mieć 60%;

Również nie zapomnieli wyczyścić flaots z

ul {overflow:auto;} 

i zachować% doskonały więc granice nie uciec:

ul>li {box-sizing:border-box;} 
+0

również ten http://jsfiddle.net/xZeJt/2/ –