【发布时间】:2021-11-15 17:32:53
【问题描述】:
如何选择具有两个类之一但不能同时具有两个类的元素?
我尝试了:not(.class1, .class2) 和:not(.class1):not(.class2),但它们似乎选择了缺少任一类的元素。我需要选择没有 both 类的元素。
我也试过:not([class='class1 class2'])as this accepted answer states,但似乎没有选择任何东西。
这是我想要的样本 -
ul.tabs > li.active:not([class='first last']) {
background-color: #F00;
}
<ul class="tabs">
<li class="first">1st</li>
<li class="active last">2nd</li> <!-- Should be red -->
</ul>
<ul class="tabs">
<li class="active first last">1st</li> <!-- Should NOT be red -->
</ul>
<li> 的其他课程我不负责。我想知道是否有办法忽略我尝试的最后一个选择器的其他类。
【问题讨论】:
-
:not(.class1):not(.class2) 完美运行
-
:not(.class1):not(.class2)不起作用。它选择缺少至少一个类的元素,而不是两者。在第一个示例中意味着第二个选项卡不是红色的。为什么投反对票? -
我不认为 css
:not()在这里工作 jsfiddle.net/d9bk9m04 -
我不知道,我没有投反对票,但现在我有点困惑。那 li.active.last 并没有错过这两个类 - 因为它确实有“最后一个”类。如前所述, :not(.first):not(.last) 将匹配没有任何类的元素。但这根本不是您想要的。
-
@BoltClock 我希望
- 只要它有类 active 而不是 first 和 last.
标签: css css-selectors