带有进度条的 CSS 滚动条

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费积分!

滚动条是自然的进度条。 滚动条向下或向右移动的距离代表了滚动该元素(通常是整个页面)的进度。 但是,如果将进度条视为随着滚动而“填充”的东西,那么它们更像是进度指示器而不是进度条。

我们可以使用一些 CSS 技巧使滚动条随着滚动而填充。

这仅适用于 -webkit- 供应商前缀的滚动条样式属性。 换句话说,这些是非标准的。 标准化的滚动条样式属性是 scrollbar-widthscrollbar-color,它们无法实现这种效果,但在长期来看可能是更安全的选择。 尽管如此,供应商前缀版本可能不会消失,因此如果您认为这是一种奇怪的渐进增强形式,那就没问题。

技巧是什么?

本质上,它是在滚动条滑块的顶部(或者对于水平滚动元素,是在侧面)悬挂一个巨大的 box-shadow

:root {
  --shadow: #43a047;
  --scrollbarBG: #eee;
  --thumbBG: #66bb6a;
}
::-webkit-scrollbar {
  width: 16px;
}
::-webkit-scrollbar-track {
  background: var(--scrollbarBG);
}
::-webkit-scrollbar-thumb {
  background-color: var(--thumbBG);
  box-shadow: 0 -100vh 0 100vh var(--shadow), 0 0 15px 5px black;
}

演示

我第一次在 Myk 的一篇文章中 看到这个。

那个例子没有区分滚动条的滑块部分,这使它更像一个进度条,但也更难使用。 我的演示有一个略微不同的颜色滑块。

我真能用这个吗?

不能! 除了它非常奇怪和非标准之外。 Safari 会翻倒,我不知道如何修复它。

我确实有一个 我最喜欢的 CSS 技巧,它与这个非常相关。

我想了解更多有关滚动条样式的信息

好,给你.