Select class 内的所有 class 但不是特定的 class

Select all class inside a class but not a specific class

我需要为所有元素使用特定字体,但最外层父元素中的 class 除外。目前我的代码如下所示:

.foo *:not(.bar) {
  font-family: sans-serif;
}
<span class="foo">
  <a href="https://example.com"><span class="bar">Lorem</span></a>
  <a href="https://example.org"><span class="baz">ipsum</span></a>
  <span class="baz"> dolor</span>
  <span class="boo"> sit amet.</span>
</span>

现在,我希望 Lorem 保持原样,同时将字体应用于其他所有内容。我该怎么做?

添加 general sibling combinator ~ 就可以了。

.foo :not(.bar) ~ * {
  font-family: sans-serif;
}
<span class="foo">
  <a href="https://example.com"><span class="bar">Lorem</span></a>
  <a href="https://example.org"><span class="baz">ipsum</span></a>
  <span class="baz"> dolor</span>
  <span class="boo"> sit amet.</span>
</span>

但是因为 :not 在旧版浏览器中不受支持,我推荐以下方法(如@m4n0 所述),除非您不需要支持这些。

.foo * {
  font-family: sans-serif;
}
.foo .bar {
  font-family: initial;
}
<span class="foo">
  <a href="https://example.com"><span class="bar">Lorem</span></a>
  <a href="https://example.org"><span class="baz">ipsum</span></a>
  <span class="baz"> dolor</span>
  <span class="boo"> sit amet.</span>
</span>