2011-05-25 8 views
5

Ho il seguente CSS per lo stile un semplice elenco:CSS3: dopo l'override: 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> 

ottengo l'effetto desiderato tranne che per l'ultimo bambino non sta perdendo di essa la barra verticale, "|" .

Link | Link | Link | 

Ho provato la combinazione: dopo: last-child & viceversa, ma la prima: dopo la dichiarazione ha sempre la precedenza.

risposta

6

fare:

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

Anche questo dovrebbe funzionare. – scurker

+0

Ho provato questo e giuro che non ha funzionato, ma certamente lo è. Credo di aver bisogno di una pausa. Grazie! – dv8withn8

0

ul.menu_list li:last-child:after dovrebbe fare il trucco.

Here is a fiddle che mostra in azione ..

2

Prova a modificare:

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

Hai qualche informazione sul supporto del selettore ': not'? – timdream

+0

Funziona alla grande. Non conoscevo la funzionalità "not()". Bello e semplificato in questo modo. – dv8withn8

+1

@timdream Sì, vedere [quirksmode] (http://www.quirksmode.org/css/contents.html#t37). Dovrebbe essere supportato in quasi tutto tranne scurker

0

ho trovato "li + li: prima di" lavori in IE8, Chrome, Firefox e Safari per Windows

+0

ad es., Li + li: prima di {content: '\ 0020 \ 2215 \ 0020';} – ryanjohnsond