417 votes

Sélectionner un élément en fonction de plusieurs classes

J'ai une règle de style que je veux appliquer à une balise quand elle a deux classes. Existe-t-il un moyen d'effectuer cette opération sans JavaScript ? En d'autres termes :

<li class="left ui-class-selector">

Je veux appliquer ma règle de style uniquement si le li a à la fois .left et .ui-class-selector classes appliquées.

0 votes

css-tricks.com/multiple-class-id-selectors - voir Double Class Selector

682voto

Felix Kling Points 247451

Vous voulez dire deux classes ? "Enchaînez" les sélecteurs (sans espace entre eux) :

.class1.class2 {
    /* style here */
}

Cela sélectionne tous les éléments avec class1 qui ont aussi class2 .

Dans votre cas :

li.left.ui-class-selector {

}

Documentation officielle : Sélecteurs de classe CSS2 .


Comme akamike signale un problème avec cette méthode dans Internet Explorer 6, vous devriez peut-être lire ceci : Utiliser des classes doubles dans les CSS d'IE6 ?

6 votes

Veuillez noter qu'IE6 n'aime pas cela, car il ne lit pas la chaîne de classes. Il ne regarde que la dernière classe de la chaîne.

18 votes

Ce n'est pas le cas :) Tous les grands sites web ont abandonné, abandonnent ou prévoient d'abandonner dans un avenir proche le support d'IE6 Faites de même !

0 votes

@Andreas Bonini : Oui, je sais. Pour être honnête, je ne me soucie déjà plus d'IE6 depuis longtemps. (J'ai supprimé mon précédent commentaire car j'ai trouvé l'autre question qui traite de ce problème).

30voto

nidhi0806 Points 283

Les sélecteurs de chaîne ne sont pas limités aux classes, vous pouvez le faire pour les classes et les identifiants.

Classes

.classA.classB {
/*style here*/
}

Classe & Id

.classA#idB {
/*style here*/
}

Id & Id

#idA#idB {
/*style here*/
}

Tous les bons navigateurs actuels supportent cela, sauf IE 6, qui sélectionne sur la base du dernier sélecteur de la liste. Ainsi, ".classA.classB" sera sélectionné sur la base de ".classB".

Pour votre cas

li.left.ui-class-selector {
/*style here*/
}

ou

.left.ui-class-selector {
/*style here*/
}

1voto

bahman parsamanesh Points 1586

Vous pouvez utiliser ces solutions :

Les règles CSS s'appliquent à toutes les balises qui ont les deux classes suivantes :

.left.ui-class-selector {
    /*style here*/
}

Les règles CSS s'appliquent à toutes les balises qui ont <li> avec les deux classes suivantes :

li.left.ui-class-selector {
   /*style here*/
}

Solution jQuery :

$("li.left.ui-class-selector").css("color", "red");

Solution Javascript :

document.querySelector("li.left.ui-class-selector").style.color = "red";

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