Css ile ikinci son öğeyi seçin


135

Zaten biliyorum: son çocuk. Ancak div'i seçmenin bir yolu var mı:

<div id="container">
 <div>a</div>
 <div>b</div>
 <div>SELECT THIS</div> <!-- THIS -->
 <div>c</div>
</div>

NOT: jQuery olmadan, yalnızca CSS ile


Elbette, ikinci-son çocuğun neden önemli olduğuna dair bir mantık var?
David Tang

evet, bazı stilleri uygulamak için hem son hem
dinamik

neden 2. son
div'e

3
"neden 2. son div'e bir sınıf koyamıyorsunuz": Belki de, ikinci son öğeye bir sınıf eklemek için (kolay) erişiminizin olmadığı, oluşturulan stil içeriğine ulaşırsanız?
Henrik

Yanıtlar:


271

CSS3'te şunlara sahipsiniz:

:nth-last-child(2)

Bakınız: https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-last-child

nth-last-child Tarayıcı Desteği:

  • Chrome 2
  • Firefox 3.5
  • Opera 9.5, 10
  • Safari 3.1, 4
  • Internet Explorer 9

1
Seçmeye çalıştığınız div'e bir sınıf ekleyemediğiniz sürece muhtemelen bu yol budur. Frosty'nin de belirttiği gibi, CSS3 eski tarayıcılar veya IE tarafından desteklenmemektedir. Tarayıcılar arası hesaplanabilirlik konusunda endişeleriniz varsa, Jquery çok daha iyi bir seçenektir.
Thomas

Bağlantılı makaleden bir kopyala / yapıştırdı ... Cevap düzenlendi, teşekkürler.
Frosty Z

1
css'deki çözüm: #container>: nth-last-child (2) {background: red;} Canlı olarak görmek için lütfen bu codepen'i kontrol edin: codepen.io/marc_dahan/pen/JyxObz
marcdahan

Artık eski IE'yi desteklememize gerek olmadığına göre, bu cevap mükemmel şekilde çalışacaktır. Dürüst olmak gerekirse, insanlar hala IE 8 ve altı kullanıyorsa, güzel şeylere sahip olmayı hak etmiyorlar.
Stender

59

Not: Bu yanıtı yayınladı çünkü OP daha sonra yorumlarda yalnızca sondan bir önceki öğeyi değil , son iki öğeyi seçmesi gerektiğini belirtti .


:nth-childCSS3 seçici aslında hiç hayal daha yetenekli!

Örneğin, bu, aşağıdakilerin son 2 öğesini seçecektir #container:

#container :nth-last-child(-n+2) {}

Ama bu güzel bir arkadaşlığın sadece başlangıcı.


Güzel cevap, cevabım sadece son çocuk eksi 1'i seçiyor. Bunu bilmiyordum. + 'd
rsplak
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.