2011-05-25 21 views
5

Mam następujące CSS styl prostą listę:CSS3: po Zastępowanie: last-child

ul.menu_list li { 
display: inline; 
} 
ul.menu_list li:after { 
content:" | "; 
} 
ul.menu_list li:last-child { 
content:""; 
} 

<ul class="menu_list"> 
    <li><a href="">Link</a></li> 
    <li><a href="">Link</a></li> 
    <li><a href="">Link</a></li> 
</ul> 

uzyskać pożądany efekt wyjątkiem ostatniego-dziecko nie traci Jest to pionowy pasek, „|” .

Link | Link | Link | 

Próbowałem łączenia: po: last-child & odwrotnie ale pierwsze: po deklaracja zawsze ma pierwszeństwo.

Odpowiedz

6

uwagi:

ul.menu_list li:after { 
    content:" | "; 
} 
ul.menu_list li:last-child:after { 
    content:""; 
} 
+0

To powinno również działać. – scurker

+0

Próbowałem tego i przysięgam, że to nie działa, ale na pewno jest. Chyba potrzebuję przerwy. Dzięki! – dv8withn8

0

ul.menu_list li:last-child:after powinno załatwić sprawę.

Here is a fiddle, który pokazuje jak to działa ..

2

Spróbuj to zamiast:

ul.menu_list li:not(:last-child):after { 
    content:" | "; 
} 
+0

Czy masz jakieś informacje na temat obsługi selektora ': not'? – timdream

+0

Działa świetnie. Nie wiedziałem o funkcji "not()". Ładne i usprawnione w ten sposób. – dv8withn8

+1

@timdream Tak, patrz [tryb quirksmode] (http://www.quirksmode.org/css/contents.html#t37). Powinien być obsługiwany prawie wszędzie z wyjątkiem scurker

0

znalazłem "Li + li: przed" działa w IE8, Chrome, Firefox i Safari dla Windows

+0

np. Li + li: before {content: '\ 0020 \ 2215 \ 0020';} – ryanjohnsond