2011-05-25 16 views
5

Tengo el siguiente CSS con el estilo de una lista simple:CSS 3: después de Anulación: 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> 

consigo el efecto deseado, excepto para el último hijo no está perdiendo su barra vertical "|" .

Link | Link | Link | 

He intentado combinar: después: last-child & viceversa, pero la primera: después de la declaración siempre tiene prioridad.

Respuesta

6

hacer:

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

Esto debería funcionar también. – scurker

+0

Intenté esto y juro que no funcionó, pero ciertamente lo es. Supongo que necesito un descanso. ¡Gracias! – dv8withn8

0

ul.menu_list li:last-child:after debe hacer el truco.

Here is a fiddle que muestra en acción ..

2

Tal vez puedas probar:

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

¿Tiene alguna información sobre soporte del selector ': not'? – timdream

+0

Funciona muy bien. No sabía acerca de la funcionalidad "not()". Agradable y aerodinámico de esta manera. – dv8withn8

+1

@timdream Sí, consulte [quirksmode] (http://www.quirksmode.org/css/contents.html#t37). Debería ser compatible con casi todo excepto scurker

0

encontré "li li +: antes de" obras en IE8, Chrome, Firefox y Safari para Windows

+0

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