0

0

CSS如何降低选择器的特异性_利用where伪类降低css优先级

P粉602998670

P粉602998670

发布时间:2026-03-03 09:09:12

|

713人浏览过

|

来源于php中文网

原创

不能。where() 不降低选择器特异性,而是取括号内所有选择器的最高特异性统一应用,如 where(.btn, .link) 特异性仍为 0,1,0,与单独使用相同,仅为语法糖,不提供降权能力。

css如何降低选择器的特异性_利用where伪类降低css优先级

where() 伪类真能降低选择器特异性?

不能。where() 不降低特异性,它只是把一组选择器的特异性“取最大值”后统一应用——和手动写多个并列选择器效果一致,但不会比其中任何一个更低。

比如 where(.btn, .link) 的特异性等同于 .btn.link 单独出现时的值(0,1,0),不是 0,0,0。它不提供“降权”能力,只是语法糖。

  • 常见错误现象:where(.old-style) { color: red; } 依然会覆盖 div { color: blue; },因为 0,1,0 > 0,0,1
  • 使用场景:批量忽略某些类名的特异性差异,避免重复写 .a, .b, .c { ... }
  • 性能影响:几乎可忽略,现代浏览器已优化;但过度嵌套 where() 可能增加解析负担

真正能降低特异性的方式有哪些?

想让样式更容易被后续规则覆盖,得从源头控制选择器“分量”。where() 不行,但这些可以:

  • 用元素选择器或属性选择器替代类名:[data-variant="primary"] 特异性是 0,1,0,和类一样;但 button[data-variant] 是 0,1,1 —— 看似高了,实际更可控,因它不依赖类名传播
  • 避免链式类:.card .header h2(0,3,1)远高于 .header-title(0,1,0);优先拆成独立类
  • :is() 替代复杂组合(注意::is() 也取最高特异性,但写起来更轻量)
  • 极端情况可用 !important,但这是覆盖手段,不是降低手段——且会破坏可维护性

为什么有人误以为 where() 能降权?

混淆了“语法简化”和“权重计算”。where() 让你少写逗号分隔,但浏览器内部仍按每个子选择器分别计算,再取最大值。

Mokker AI
Mokker AI

AI产品图添加背景

下载

立即学习前端免费学习笔记(深入)”;

示例对比:

/* 这两组规则特异性完全相同 */
where(.primary, .secondary) { color: green; }
.primary, .secondary { color: green; }
<p>/<em> 但下面这行不会变弱 </em>/
where(div, .container) { padding: 1rem; } /<em> 特异性 = max(0,0,1, 0,1,0) = 0,1,0 </em>/
  • 容易踩的坑:在 CSS-in-JS 或原子化框架(如 Tailwind)里滥用 where() 以为能“重置优先级”,结果发现样式依旧打架
  • 兼容性注意:Chrome 105+、Firefox 103+、Safari 15.4+ 支持;旧版本直接忽略整条规则(需配降级方案)

什么时候该老老实实用单类名?

当你要确保某条样式一定可被覆盖、或组件需要强隔离时,别绕弯子。

  • 组件 scoped 样式(如 Vue <style scoped></style>)自动加属性选择器,特异性可控,比手写 where() 更稳
  • 设计系统中基础 token 类(如 text-smbg-blue-50)必须保持低且一致的特异性,此时硬编码单类比包裹 where() 更透明
  • 调试时看到 where() 会多一层解析心智负担——尤其和 :is():not() 混用时

特异性不是越低越好,而是要 predictable。靠 where() “假装降权”,不如一开始就选对选择器粒度。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1016

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

814

2023.11.06

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6490

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

839

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1088

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1794

2024.03.01

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

514

2023.07.28

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

48

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 38.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号