使用 prefers-color-scheme 媒体查询可实现滚动条随系统主题自动切换,通过为深色和浅色模式分别设置 ::-webkit-scrollbar 样式,并结合系统颜色变量以提升兼容性,适用于 WebKit 内核浏览器。

网页滚动条样式可以通过 css 自定义,但要让其随操作系统主题(如浅色/深色模式)自动变化,需要结合媒体查询和系统颜色变量。以下是实现方法。
使用 prefers-color-scheme 媒体查询
通过 prefers-color-scheme 检测用户系统的主题偏好,分别设置不同模式下的滚动条样式。
示例代码:
/* 深色模式下的滚动条 */ @media (prefers-color-scheme: dark) { ::-webkit-scrollbar { width: 12px; } ::-webkit-scrollbar-track { background: #1e1e1e; } ::-webkit-scrollbar-thumb { background-color: #6b6b6b; border-radius: 6px; } ::-webkit-scrollbar-thumb:hover { background-color: #909090; } } <p>/<em> 浅色模式下的滚动条 </em>/ @media (prefers-color-scheme: light) { ::-webkit-scrollbar { width: 12px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background-color: #c1c1c1; border-radius: 6px; } ::-webkit-scrollbar-thumb:hover { background-color: #a0a0a0; } }
使用系统颜色关键字(部分支持)
CSS 提供了一些系统保留颜色,如 Scrollbar、ButtonFace 等,但目前浏览器对这些关键字在自定义滚动条中的支持有限,仅建议作为降级方案。
可尝试方式:
::-webkit-scrollbar-thumb { background-color: GrayText; /* 系统级灰色文本色 */ }
兼容性与注意事项
当前滚动条样式的动态切换主要依赖 WebKit 内核(chrome、edge、safari),firefox 不支持 ::-webkit-scrollbar,因此需注意跨浏览器表现。
立即学习“前端免费学习笔记(深入)”;
基本上就这些,利用系统偏好媒体查询即可实现滚动条随主题自动变化,不复杂但容易忽略细节。