2012-02-10 23 views
82

Estoy buscando un selector de CSS que me permita seleccionar el último hijo de la lista.CSS último-hijo (-1)

<ul> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> <!-- select the pre last item dynamically no matter how long this list is --> 
    <li>6</li> 
</ul> 

método estático:

ul li:nth-child(5) 

método dinámico:

ul li:last-child(-1) 

que por supuesto no valida, también nth-last-child no parece proporcionar una forma dinámica .. Puedo recurrir a javascript, pero me pregunto si hay una manera de CSS que pasé por alto

+7

Suele llamarse "el penúltimo". También hay otra palabra elegante para él: "penúltimo". – BoltClock

+1

@BoltClock Me encanta la palabra "penúltimo". Voy a usarlo en una actualización de Facebook sarcástica, ahora. –

+0

Posible duplicado de [Seleccione el segundo último elemento con css] (http://stackoverflow.com/questions/5418744/select-second-last-element-with-css) –

Respuesta

167

Usted puede use :nth-last-child(); de hecho, además de :nth-last-of-type() no sé qué más podrías usar. No estoy seguro de lo que quiere decir con "dinámico", pero si quiere decir si el estilo se aplica al último segundo hijo secundario cuando se agregan más niños a la lista, sí lo hará. Interactive fiddle.

ul li:nth-last-child(2) 
+0

¡Está bien, eso funciona! El interpretador de código (jsfiddle) no lo validó ... ¡Adivina un error de su parte! gracias –

+0

No IE7 e IE8 Support –

+4

@David Allen: No creo que le importe si ya está tratando de usar ': nth-child (5)' y ': last-child'. Comentarios como este deben ir a la pregunta o mantenerse a sí mismos. – BoltClock

1

A menos que se puede obtener PHP para etiquetar ese elemento con una clase que es mejor usar jQuery.

jQuery(document).ready(function() { 
    $count = jQuery("ul li").size() - 1; 
    alert($count); 
    jQuery("ul li:nth-child("+$count+")").css("color","red"); 
}); 
+3

Es francamente molesto que jQuery no implemente ': nth-last-child()' solo porque [John piensa que nadie lo usa] (http://ejohn.org/blog/selectors-that-people-actually-use) . – BoltClock

+0

Preferiría etiquetar con python ;-) ontopic: Bueno, CSS parece estar bien así, tal vez jsfiddle también piensa que nadie lo usa :-) –

+0

@ArgsKwargs: Extraño por qué no funcionaría en jsFiddle. Depende del navegador interpretarlo; no tiene su propio motor CSS. – BoltClock

Cuestiones relacionadas