使用 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;
}
}
/ 浅色模式下的滚动条 /
@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,因此需注意跨浏览器表现。
立即学习“前端免费学习笔记(深入)”;
- 确保在深色/浅色模式切换时页面能正确响应媒体查询
- 移动端 Safari 也支持 prefers-color-scheme,可统一适配
- 若使用框架(如 React),可在根元素添加类名控制,提升性能
基本上就这些,利用系统偏好媒体查询即可实现滚动条随主题自动变化,不复杂但容易忽略细节。










