Skip to content
Go back

使用 CSS :where() 简化选择器并管理优先级

在编写 CSS 时,我们经常会遇到需要对多个元素应用相同样式的情况。传统的写法往往会导致选择器变得非常冗长。:where() 伪类的出现,不仅帮我们简化了代码,还带来了一个非常有趣的特性:零优先级

什么是 :where()

:where() 是一个 CSS 伪类函数,它接受一个选择器列表作为参数,并将选择的样式应用于该列表中的所有元素。

简化选择器

假设你想为 sectionnav 下的标题和段落设置相同的颜色。

传统写法(代码较多):

section h1,
section p,
nav h1,
nav h2,
nav h3,
nav h4,
nav h5,
nav h6,
nav p,
nav ul li {
    color: red; 
}

使用 :where() 优化(代码精简):

:where(section, nav) :where(h1, h2, h3, h4, h5, h6, p, ul li) {
    color: red;
}

通过嵌套使用 :where(),我们可以极大地减少重复代码,使样式表更加清晰易读。

:where() 的核心特性:零优先级

这是 :where() 与类似的 :is() 伪类最大的区别::where() 的优先级(Specificity)始终为 0

这意味着,无论你在 :where() 中写了多么复杂的选择器,它的权重都不会增加。这在以下场景中非常有用:

  1. 创建基础样式库:你可以使用 :where() 定义一些默认样式,而不用担心它们会因为权重太高而难以被后续的样式覆盖。
  2. 重置样式(Reset):在进行 CSS 重置时,使用 :where() 可以保证重置样式的优先级最低。

总结

如果你还在为冗长的选择器和复杂的权重计算而烦恼,不妨尝试一下 :where()


Share this post on:

Previous Post
深入理解 JavaScript 中的 Number.isFinite() 与全局 isFinite()
Next Post
纯 CSS 实现点中间的渐变效果