Pilih semua elemen anak secara rekursif dalam CSS


407

Bagaimana Anda dapat memilih semua elemen anak secara rekursif?

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

Kelas ini hanya melempar kelas pada className yang ditentukan dan semua anak langsung. Bagaimana Anda bisa, dengan cara sederhana, memilih semua childNodes seperti ini:

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

Jawaban:


621

Gunakan ruang putih untuk mencocokkan semua keturunan elemen:

div.dropdown * {
    color: red;
}

x ycocok dengan setiap elemen y yang ada di dalam x , betapapun dalamnya bersarang - anak-anak, cucu, dan sebagainya.

Tanda bintang * cocok dengan elemen apa pun.

Spesifikasi Resmi: CSS 2.1: Bab 5.5: Selektor Descendant


itu berfungsi, tetapi sekarang mengesampingkan semua kelas lain bahkan jika mereka memiliki prioritas yang lebih tinggi .. (mereka kemudian ditempatkan dalam file css)
clarkk

Pemilih juga memainkan peran dalam prioritas apa yang dimiliki properti, bukan hanya di tempat di mana file itu muncul. Anda dapat mencoba menambahkan `! color: red !important;
Important`

Saya tahu, ini agak jelek. Anda bisa mencoba menulis penyeleksi yang lebih tepat, kemungkinan, ini akan berhasil juga. (mis. #head ul#head ul#navi)
anroesti

2
Oke, contoh yang sangat mendasar: p.xylebih penting daripada p, karena lebih spesifik. jsfiddle.net/ftJVX
anroesti

1
bagaimana jika saya ingin semua anak yang memiliki kelas khusus?
MEM

144

Aturannya adalah sebagai berikut:

A B 

B sebagai keturunan A

A > B 

B sebagai anak dari A

Begitu

div.dropdown *

dan tidak

div.dropdown > *
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.