这应该很简单,但我找不到它的搜索词。
假设我有这个:
<div class="a c">Foo</div>
<div class="b c">Bar</div>
在 CSS 中,如何创建一个与“(.a 或 .b) 和 .c”相匹配的选择器?
我知道我可以做到这一点:
.a.c,.b.c {
/* CSS stuff */
}
但是,假设我必须经常进行这种逻辑,并进行各种逻辑组合,是否有更好的语法?
有更好的语法吗?
不。 CSS 的
or
运算符 (,
) 不允许分组。它本质上是选择器中优先级最低的逻辑运算符,因此您必须使用 .a.c,.b.c
。
我使用
:is()
选择器成功了:
*:is(.a, .b).c{...}
如果你有这个:
<div class="a x">Foo</div>
<div class="b x">Bar</div>
<div class="c x">Baz</div>
如果你只想选择有
.x
和(.a
或 .b
)的元素,你可以这样写:
.x:not(.c) { ... }
但只有当您有三个“子类”并且您想选择其中两个时,这才方便。
仅选择一个子类(例如
.a
):.a.x
选择两个子类(例如
.a
和.b
):.x:not(.c)
选择所有三个子类:
.x