You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法为多个::selection选择器使用同一CSS规则集?

为什么不能合并多个::selection选择器到同一CSS规则集?

这个问题的核心其实和早期浏览器对CSS选择器的解析容错机制有关,尤其是旧版本Firefox的处理逻辑:

当你把两个选择器写在同一个规则集里,比如:

::selection, ::-moz-selection { background: red; }

对于只支持::-moz-selection的旧版Firefox来说,它完全不认识标准的::selection选择器。而CSS解析器有个严格的规则:如果一个规则集里存在任何浏览器无法识别的选择器,整个规则集会被直接忽略,不会执行其中任何一条样式。所以旧Firefox会直接丢掉这个规则块,自然看不到红色选中效果。

但如果你分开写:

::selection { background: red; } 
::-moz-selection { background: red; }

情况就不一样了:旧Firefox会跳过它不认识的::selection规则,只执行能识别的::-moz-selection规则;而支持标准语法的现代浏览器(包括新版Firefox)会忽略带前缀的::-moz-selection,执行标准的::selection规则。这样两边都能正常生效。

不过要补充一句:现在新版的Firefox已经支持标准的::selection伪元素了,所以在现代浏览器环境下,合并写法其实是可以正常工作的。但如果你的代码需要兼容旧版Firefox(比如Firefox 61之前的版本),就必须分开定义这两个选择器。

内容的提问来源于stack exchange,提问作者mhpreiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:18:51