Ответ 1
Вы можете использовать псевдокласс :not()
, но IE8 его не поддерживает:
.this-class:not(table), .this-class .something-else {
border: 1px solid red;
}
К счастью, заставить его работать для IE8 тривиально - просто примените стиль к любым элементам с помощью .this-class
и переопределите его для тех, которые вместо таблиц:
.this-class, .this-class .something-else {
border: 1px solid red;
}
table.this-class {
border: none;
}
Обратите внимание, что часть .this-class .something-else
вашего первого правила остается полностью отдельной, сопоставляя потомки .this-class
независимо от того, какой тип элемента она есть. Если это предназначено, вы можете оставить эту часть без изменений. В противном случае, если вы хотите, чтобы стили применялись к потомкам .this-class
с тем же условием, вам нужно будет соответствующим образом повторить условие.
Использование :not()
:
.this-class:not(table), .this-class:not(table) .something-else {
border: 1px solid red;
}
И используя переопределение (для IE8):
.this-class, .this-class .something-else {
border: 1px solid red;
}
table.this-class, table.this-class .something-else {
border: none;
}