Sélectionner récursivement tous les éléments enfants en CSS


407

Comment pouvez-vous sélectionner tous les éléments enfants de manière récursive?

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

Cette classe ne lance qu'une classe sur le nom de classe défini et tous les enfants immédiats. Comment pouvez-vous, d'une manière simple, choisir tous les nœuds enfants comme ceci:

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

Réponses:


621

Utilisez un espace blanc pour faire correspondre tous les descendants d'un élément:

div.dropdown * {
    color: red;
}

x ycorrespond à chaque élément y qui se trouve à l'intérieur de x , aussi profondément qu'il soit imbriqué - enfants, petits-enfants, etc.

L'astérisque *correspond à n'importe quel élément.

Spécification officielle: CSS 2.1: Chapitre 5.5: Sélecteurs descendants


cela fonctionne, mais maintenant il remplace toutes les autres classes même si elles ont une priorité plus élevée .. (elles sont placées plus tard dans le fichier css)
clarkk

Le sélecteur joue également un rôle dans la priorité des propriétés, pas seulement dans leur emplacement dans le fichier. Vous pouvez essayer d'ajouter «! Important» à vos valeurs, par exemplecolor: red !important;
anroesti

Je sais, c'est un peu moche. Vous pouvez plutôt essayer d'écrire des sélecteurs plus précis, il y a de fortes chances que cela fonctionne aussi. (par exemple #head ul#head ul#navi)
anroesti

2
Bon, exemple très basique: p.xyest plus important que p, parce que c'est un peu plus spécifique. jsfiddle.net/ftJVX
anroesti

1
que faire si je veux que tous les enfants qui avaient une classe spécifique?
MEM

144

La règle est la suivante:

A B 

B en tant que descendant de A

A > B 

B comme enfant de A

Donc

div.dropdown *

et pas

div.dropdown > *
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.