CSS'de tüm alt öğeleri özyinelemeli olarak seçme


407

Tüm alt öğeleri özyinelemeli olarak nasıl seçebilirsiniz?

div.dropdown, div.dropdown > * {
    color: red;
}

Bu sınıf yalnızca tanımlanan className ve tüm yakın çocuklara bir sınıf atar. Basit bir şekilde, aşağıdaki gibi tüm childNodes'ları nasıl seçebilirsiniz:

div.dropdown, 
div.dropdown > *, 
div.dropdown > * > *, 
div.dropdown > * > * > *, 
div.dropdown > * > * > * > * {
    color: red;
}

Yanıtlar:


621

Bir öğenin tüm alt öğelerini eşleştirmek için beyaz boşluk kullanın :

div.dropdown * {
    color: red;
}

x yx içindeki her eleman y ile eşleşir , ancak derin yuvalanmış olabilir - çocuklar, torunlar vb.

Yıldız işareti *herhangi bir öğeyle eşleşir.

Resmi Şartname: CSS 2.1: Bölüm 5.5: Soyundan Seçiciler


çalışır, ancak şimdi daha yüksek önceliğe sahip olsalar bile diğer tüm sınıfları geçersiz kılar .. (daha sonra css dosyasına yerleştirilir)
clarkk

Seçici aynı zamanda özelliklerin yalnızca önceliğinde bulundukları dosyada değil, hangi önceliğe sahip olduğu konusunda da rol oynar. Değerlerinize `! color: red !important;
İmportant`

Biliyorum, biraz çirkin. Bunun yerine daha hassas seçiciler yazmayı deneyebilirsiniz, şansınız bu işe yarar. (örn. #head ul#head ul#navi)
anroesti

2
Tamam, çok temel bir örnek: p.xybundan daha önemlidir p, çünkü biraz daha spesifiktir. jsfiddle.net/ftJVX
anroesti

1
Belirli bir sınıfa sahip tüm çocuğu istersem ne olur?
MEM

144

Kural aşağıdaki gibidir:

A B 

A'nın torunu olarak B

A > B 

B'nin A çocuğu olarak

Yani

div.dropdown *

ve yok

div.dropdown > *
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.