Vous pouvez utiliser le :not()
pseudo-classe mais IE8 ne le prend pas en charge :
.this-class:not(table), .this-class .something-else {
border: 1px solid red;
}
Heureusement, le faire fonctionner pour IE8 est trivial - il suffit d'appliquer le style à tous les éléments avec .this-class
et le remplacer pour ceux qui sont à la place :
.this-class, .this-class .something-else {
border: 1px solid red;
}
table.this-class {
border: none;
}
Notez que le .this-class .something-else
la partie de votre première règle reste complètement séparée, en faisant correspondre les descendants des .this-class
quel que soit le type d'élément. Si tel est le but recherché, vous pouvez laisser cette partie inchangée. Sinon, si vous souhaitez que les styles s'appliquent aux descendants de l'élément .this-class
avec la même condition vous devrez répéter la condition en conséquence.
Utilisation de :not()
:
.this-class:not(table), .this-class:not(table) .something-else {
border: 1px solid red;
}
Et en utilisant une dérogation (pour IE8) :
.this-class, .this-class .something-else {
border: 1px solid red;
}
table.this-class, table.this-class .something-else {
border: none;
}