Seleziona tutti gli elementi figlio in modo ricorsivo nei CSS


407

Come puoi selezionare ricorsivamente tutti gli elementi figlio?

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

Questa classe genera solo una classe sul className definito e su tutti i figli immediati. Come puoi, in modo semplice, scegliere tutti i nodi figlio in questo modo:

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

Risposte:


621

Usa uno spazio bianco per abbinare tutti i discendenti di un elemento:

div.dropdown * {
    color: red;
}

x ycorrisponde a ogni elemento y che si trova all'interno di x , per quanto profondamente annidato possa essere: figli, nipoti e così via.

L'asterisco * corrisponde a qualsiasi elemento.

Specifiche ufficiali: CSS 2.1: Capitolo 5.5: Selettori discendenti


funziona, ma ora sovrascrive tutte le altre classi anche se hanno una priorità più alta .. (sono posizionate più avanti nel file css)
clarkk,

Il selettore svolge anche un ruolo in quale priorità hanno le proprietà, non solo in quale parte del file appaiono. Potresti provare ad aggiungere `! Important` ai tuoi valori, ad escolor: red !important;
Anroesti il

Lo so, è un po 'brutto. Potresti invece provare a scrivere selettori più precisi, è probabile che anche questo funzioni. (es. #head ul#head ul#navi)
anroesti,

2
Ok, esempio molto semplice: p.xyè più importante di p, perché è un po 'più specifico. jsfiddle.net/ftJVX
anroesti il

1
e se volessi tutti i bambini che avevano una classe specifica?
MEM

144

La regola è la seguente:

A B 

B come discendente di A

A > B 

B come figlio di A

Così

div.dropdown *

e non

div.dropdown > *
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.