在前端世界里,有一个长期被吐槽却又不得不忍受的存在——滚动条。
它几乎出现在每个页面里,却又几乎无法优雅地控制。
你可以精细打磨按钮、卡片、排版,但只要一出现滚动条—— 风格直接回到“操作系统默认”。
原生滚动条:能改,但不好用
过去我们想改滚动条,基本就两条路。
第一种:::-webkit-scrollbar
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-thumb {
background: #1677ff;
}
问题:
只在 WebKit 系浏览器上好使 Firefox 直接不认 还不是标准,未来也不稳
第二种:标准方案 scrollbar-color
scrollbar-color: #1677ff #f0f2f5;
scrollbar-width: thin;
现在确实是“正统写法”了,而且跨浏览器基本可用。
但能力也有限:你只能改颜色和粗细。
想要:
圆角 阴影 hover 效果 更精细的视觉控制
——基本做不到。
那怎么办?
如果你对 UI 有点要求,这两种方案都不太够。
这时候就轮到一个老牌但一直很稳的方案了:OverlayScrollbars
目前这个库在 Github 上已经获得了 4.8KStar
什么是 OverlayScrollbars?
它本质上做了一件很聪明的事:
保留原生滚动行为,但“接管”滚动条的视觉层。
也就是说:
滚动还是浏览器原生滚动(不卡、不怪) 但你看到的滚动条,是你自己定义的
为什么推荐 OverlayScrollbars?
🎨 UI 真正可控
不像 scrollbar-color 只给你两种颜色。
OverlayScrollbars 可以:
控制宽度 做圆角 加动画 定义 hover / active 状态
🧱 多框架直接用
不用自己封装:
React Vue Angular Svelte
都有现成支持。
🧠 成本很低
没有复杂配置,没有一堆奇怪 API。
用法简单到有点离谱。
上手到底有多简单?
就三步。
安装
npm install overlayscrollbars
引入
import 'overlayscrollbars/overlayscrollbars.css';
import { OverlayScrollbars } from 'overlayscrollbars';
初始化
OverlayScrollbars(document.querySelector('#app'), {});
没了。
想稍微调一下?
OverlayScrollbars(document.querySelector('#app'), {
scrollbars: {
autoHide: 'leave',
},
});
写在最后
滚动条这个东西,很小,但一直很烦。
过去我们要么忍,要么用一堆 hack 去改—— 要么不统一,要么不稳定,要么不好看。
现在有了 scrollbar-color,确实迈进了一步:
至少能“统一一下风格”了。
但如果你对 UI 有更高一点要求,比如:
想要更干净的布局 想要更精致的细节 想要真正可控的设计
那光靠原生 CSS 还是不太够。
这也是 OverlayScrollbars 存在的意义:在不改变原生体验的前提下,把滚动条变成一个“可设计的组件”。
官网地址: https://docs.namichong.com/overlayscrollbars/Github 地址: https://github.com/KingSora/OverlayScrollbars