Jos*_*osh 157 html css css-selectors
这应该很简单,但我找不到它的搜索条件.
假设我有这个:
<div class="a c">Foo</div>
<div class="b c">Bar</div>
Run Code Online (Sandbox Code Playgroud)
在CSS中,我如何创建一个匹配"(.a或.b)和.c"匹配的选择器?
我知道我可以这样做:
.a.c,.b.c {
/* CSS stuff */
}
Run Code Online (Sandbox Code Playgroud)
但是,假设我将不得不经常使用各种逻辑组合来做这种逻辑,那么是否有更好的语法?
Mat*_*all 129
有更好的语法吗?
没有.cIN' or
运营商(,
)不允许分组.它本质上是选择器中最低优先级的逻辑运算符,因此必须使用.a.c,.b.c
.
Met*_*der 22
还没有,但是有一个实验:matches()
选择器可以做到这一点:
:matches(.a .b) .c {
/* stuff goes here */
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里和这里找到更多信息.目前,大多数浏览器都支持它的初始版本:any()
,它的工作方式相同,但将被替换为:matches()
.在使用它之前我们只需要再等一会儿(我肯定会).
Šim*_*das 12
如果你有这个:
<div class="a x">Foo</div>
<div class="b x">Bar</div>
<div class="c x">Baz</div>
Run Code Online (Sandbox Code Playgroud)
而你只想选择有.x
和(.a
或.b
)你可以写的元素:
.x:not(.c) { ... }
Run Code Online (Sandbox Code Playgroud)
但只有当你有三个"子类"并且你想要选择其中两个时,这才是方便的.
只选择一个子类(例如.a
):.a.x
选择两个子类(例如.a
和.b
):.x:not(.c)
选择所有三个子类: .x
Yaa*_*ler 11
我发现使用:is()
选择器成功:
*:is(.a, .b).c{...}
Run Code Online (Sandbox Code Playgroud)