2010-01-27 4 views
8

Existe-t-il un moyen de combiner deux sélecteurs CSS ou plus en utilisant une condition booléenne - and, or, not?Combinaison de plusieurs sélecteurs CSS avec une condition booléenne

Considérez ceci <div>:

<div class="message error"> 
    You have being logged out due too much activity. 
</div> 

Puis-je choisir uniquement les éléments qui contiennent à la fois les classes, par exemple?

Quelque chose du genre div.message && div.error?

+0

Où voulez-vous faire la sélection? En Javascript (en utilisant une lib?) Ou dans une feuille de style ou dans une autre langue? – beggs

+0

ces sélecteurs iront dans une feuille de style. – Anurag

+1

La question a déjà été répondu correctement, mais notez que les sélecteurs de double classe ne fonctionnent pas dans notre cher ami IE6. – adamJLev

Répondre

13

Ceux-ci devraient travailler:

&& = div.message.error {} 
|| = div.message, div.error {} 

Ne pensez pas que vous pouvez faire "pas"

Edit: juste fait un test rapide pour confirmer:

<html> 
    <head> 
     <style type="text/css"> 
      div.error.message { 
       background-color: red; 
      } 
      div.message, div.error { 
       border: 1px solid green; 
      } 
     </style> 
    </head> 
    <body> 
     <div>None</div> 
     <div class="error">Error</div> 
     <div class="message">Message</div> 
     <div class="error message">Error Message</div> 
    </body> 
</html> 

Le "message" , "erreur" et "message d'erreur" divs ont tous une bordure verte et seul le div "message d'erreur" a un fond rouge.

+1

parfait .. 'pas' n'est pas un gros souci, seulement' and' et 'ou' sont .. wow nous avons une langue twister ici :) .. merci beaucoup pour l'exemple détaillé. – Anurag

+0

Excellente solution. Juste curieux, la solution est-elle formellement documentée partout comme dans les spécifications CSS, etc.? Utile pour référence. – David

5

Essayez div.message.error.

+2

... je crois que c'est le cas "et". Pour "ou" vous pouvez simplement répéter la ligne avec chaque classe. – Jay

+0

pas moyen, je l'aurais deviné. Merci beaucoup! – Anurag

Questions connexes