::selection仅支持color、background-color等少数属性,Firefox需额外写::-moz-selection,iOS Safari中color无效,必须显式设置半透明背景色并真机测试。
selection
伪元素
不支持所有CSS属性
直接用
改背景色是可行的,但别指望它能继承父元素的
或响应
—— 浏览器对它的样式支持非常有限,只认
、
、
、
和少数几个文本相关属性。其他像
、
、
全部被忽略。
常见错误现象:
写了一堆样式发现没生效,其实是浏览器压根不解析;或者在深色模式下背景色和文字色撞成一片,根本看不清选中内容。
必须显式声明
,不能依赖继承
推荐用半透明白色/黑色(如
),避免硬编码纯色导致暗色模式下不可读
Firefox 仅支持
,且不支持
需要兼容Firefox就得写两套选择器
Chrome/Safari/Edge 用
,Firefox 必须额外加
,而且两者不能合并书写 —— 否则整个规则会被 Firefox 当作无效而丢弃。
使用场景:你希望深色页面里选中文本有浅灰底+深灰字,又不想让用户在 Firefox 里看到默认蓝底白字。
立即学习
“
前端免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
两个选择器必须分开写,中间不能有逗号或空格连接
Firefox 不支持
,加了也白加
如果只写
,Firefox 下完全回退到系统默认样式
全局设置 vs 局部覆盖要分清作用域
是全局生效的,但可以被更具体的选择器覆盖。比如给某个
单独设选中样式,就得用
,否则它会沿用 body 级的定义。
容易踩的坑:在组件库或框架里改了全局
,结果发现模态框里的文本选中色和按钮文字色冲突,或者代码块里语法高亮被覆盖掉。
优先用元素限定范围,比如
专用于代码块
避免在
或
上直接写
,除非真要全站统一
如果用了 CSS-in-JS 或 Shadow DOM,
默认不会穿透,得在对应 scope 内重写
移动端 Safari 的 selection 行为很特别
iOS Safari 对
的支持不完整:它允许改
,但会强制把
覆盖为系统高亮色(通常是白色),哪怕你写了
也没用。而且长按唤出的选词菜单(“复制”“搜索”等)背景色不受控制。
性能影响几乎为零,但它确实是个“看起来改了、其实没生效”的典型场景。
不要在 iOS 上依赖
做可读性保障,只靠
对比度
测试时务必真机长按,模拟器有时表现不一致
如果产品强依赖选中文本的视觉一致性(比如教育类划词笔记),得考虑用 JS 模拟选区 + 自定义高亮层
实际项目里最常漏掉的是 Firefox 双写和 iOS 的 color 失效——这两个点不验证,上线后用户反馈“选中看不见字”,就只能紧急补
和调透明度。
::selectioncolorprefers-color-schemecolorbackground-colortext-shadowcursorfont-weightbordertransformcolorbackground-colorrgba(0,0,0,0.3)::-moz-selectiontext-shadow::selection::-moz-selection::selection {
background-color: rgba(255, 255, 255, 0.3);
color: #1a1a1a;
}
::-moz-selection {
background-color: rgba(255, 255, 255, 0.3);
color: #1a1a1a;
}text-shadow::selection::selectionarticle::selection::selectionpre::selectionbody*::selection::selection::selectionbackground-colorcolorcolor: redcolorbackground-color::-moz-selection