460 votes

Sélectionner tous les éléments enfants de manière récursive en CSS

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

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

Cette classe ne lance une classe que sur le className défini et tous les enfants immédiats. Comment pouvez-vous, d'une manière simple, choisir tous les childNodes comme ceci :

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

709voto

anroesti Points 2423

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

div.dropdown * {
    color: red;
}

x y correspond à chaque élément y qui est à l'intérieur x même s'il est profondément 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

1 votes

Il 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)

0 votes

Le sélecteur joue également un rôle dans la priorité des propriétés, et pas seulement dans l'endroit où elles apparaissent dans le fichier. Vous pouvez essayer d'ajouter ` !important` à vos valeurs, par exemple. color: red !important;

0 votes

Je sais, c'est un peu moche. Vous pourriez 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 )

169voto

La règle est la suivante :

A B 

B comme descendant de A

A > B 

B comme enfant de A

Alors

div.dropdown *

et non

div.dropdown > *

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X