CSS son çocuk (-1)


161

Listenin son öncesi alt öğesini seçmeme izin veren bir css seçici arıyorum.

<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>

Statik yöntemi:

ul li:nth-child(5)

Dinamik yöntem:

ul li:last-child(-1)

tabii ki doğrulamıyor, aynı zamanda nth-son-çocuk dinamik bir yol sağlamak gibi görünmüyor .. Javascript için geri dönebilirim ama gözden kaçan bir css yolu olup olmadığını merak ediyorum


11
Genellikle "ikinci son" olarak adlandırılır. Bir başka süslü kelime daha var: "sondan bir önceki".
BoltClock

2
@BoltClock "Sondan bir önceki" kelimesini seviyorum. Şimdi, sersem bir Facebook güncellemesinde kullanacağım.
Andrew Barber


2
Penultimate'tan bahseden herkese teşekkürler - bu, Google'da "css penultimate" için 1 numara oldu.
chakeda

Yanıtlar:


303

Sen edebilirsiniz kullanmak :nth-last-child(); aslında, başka :nth-last-of-type()ne kullanabileceğinizi bilmiyorum. "Dinamik" ile ne kastettiğinizden emin değilim, ancak listeye daha fazla çocuk eklendiğinde stilin yeni ikinci son çocuk için geçerli olup olmadığını kastediyorsanız, evet olacaktır. Etkileşimli keman.

ul li:nth-last-child(2)

Tamam, işe yarıyor! Kod yorumlayıcı (jsfiddle) bunu doğrulamamıştır .. Yanlarında bir hata sanırım! teşekkürler
Hedde van der Heide

4
@ David Allen: Bence zaten kullanmaya çalışıyor eğer o umursadığını sanmıyorum :nth-child(5)ve :last-child. Bunun gibi yorumlar ya soruya geçmeli ya da kendiliğinden saklanmalıdır.
BoltClock

1
Destek sorunu hakkında bilgi sahibi olmayabilir. Ben sadece vurgulamak .... jQuery kullanarak bir cevap verdi ve ben JavaScript devre dışı kullanıcılarla çalışma alışkanlık söylemek mutlu olacak. ancak daha fazla kişi JS diabled olan daha IE7 / 8 kullanan
David Allen

1
@David, selectivrz veya modernizr eklentisinin bu sorunu çözebileceğine inanıyorum, dokümanları görmek zorundayım
Hedde van der Heide

@ArgsKwargs Harika Yorum selectivizr hiç duymadım. Son çocuğu destekleyip desteklemediğini bize bildirin
David Allen

1

PHP bu öğeyi bir sınıf ile etiketlemek sürece jQuery kullanmak daha iyidir.

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

6
JQuery'nin John'un bunu kimsenin kullanmadığını düşünmesi:nth-last-child() nedeniyle uygulamadığı, can sıkıcı bir durum .
BoltClock

Ben python ;-) ontopic ile etiketlemek istiyorum: Peki css bu şekilde iyi görünüyor, belki jsfiddle da kimse kullanmıyor düşünüyor :-)
Hedde van der Heide

@ArgsKwargs: Neden jsFiddle'da işe yaramayacağı garip. Yorumlamak tarayıcıya kalmış; kendi CSS motoru yok.
BoltClock

@BoltClock işe yaramazsa işe yaramaz, kod yardımcısı (renkli görselleştirme) sadece kapatılmamış bir şeyi gösterir (bu yüzden denemedim bile)
Hedde van der Heide

Kodlardan herhangi birinin kapatılmadığını sanmıyorum. Ama "renkli görselleştirme" hakkında ne demek istediğini biliyorum
David Allen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.