2012-03-13 17 views
15

CSS2'de sıralı bir listenin nth elemanını alma olasılığı var mı? (CSS3 içinde :nth-child() benzer)CSS2 seçicilerini kullanarak bir elemanın nth çocuğunu nasıl alabilirim?


Bilginize: Ben XHTML olmak Parcheesi Almanca sürümünü programlamak çalışıyorum 1.1 ve CSS2 uyumlu ve sipariş listelerini kullanarak Playfield üretmek için çalışıyor, bu yüzden Hareket seçenekleri veri yapısı tarafından önceden belirlenir. Merkezin etrafını konumlandırmak için liste elemanlarını sayıya göre seçmek istiyorum.

cevap

23

Sen combinators olarak birçok kez tekrarlayarak :first-child pseudo-class birlikte adjacent sibling combinators kullanabilirsiniz. Bu ayrıca an answer to a different question'da da belirtilmiştir.

Herhangi bir öğe için E, E:first-child ile başlayın, hedeflediğiniz öğeye ulaşıncaya kadar sonraki çocuklar için + E ekleyin. Elbette aynı eleman E'u kullanmak zorunda değilsiniz; Herhangi bir tür, sınıf, ID, vb. için bunu değiştirebilirsiniz, ancak önemli bitler :first-child ve + işaretlerdir.

Örnek olarak, kendi ol aşağıdaki CSS3 seçici üçüncü li almak için:

ol > li:nth-child(3) 

şöyle BB2 replike olması:

ol > li:first-child + li + li 

bir resim:

<ol> 
    <li></li> <!-- ol > li:nth-child(1), ol > li:first-child --> 
    <li></li> <!-- ol > li:nth-child(2), ol > li:first-child + li --> 
    <li></li> <!-- ol > li:nth-child(3), ol > li:first-child + li + li --> 
    <li></li> <!-- ol > li:nth-child(4), ol > li:first-child + li + li + li --> 
</ol> 

Not: there are no sibling combinators that look at preceding siblings (ne CSS2'de ne de CSS3'te), CSS2 seçicilerini kullanarak :nth-last-child() veya :last-child'u taklit edemezsiniz.

Ayrıca, yalnızca b (spec tarif edildiği gibi), formül an+b sabit bir sayı olan bir zamanda, belirli bir çocuk için :nth-child(b) taklit; Sadece komşu kardeş kombinatorlerle karmaşık formüller elde edemezsiniz.

İlgili konular