学会使用 CSS 自定义滚动条,能让你做的产品更有用户体验!

开发 前端
自定义滚动条现在越来越流行,很值得研究一翻。我一直对如何在CSS中定制滚动条很感兴趣,但一直没有机会这样做。今天,我就记录一下自己的学习过程。

[[409201]]

自定义滚动条现在越来越流行,很值得研究一翻。为什么需要自定义滚动?浏览器的默认的滚动条让UI在多个操作系统中看起来不一致,使用定义滚动我们可以统一风格。

我一直对如何在CSS中定制滚动条很感兴趣,但一直没有机会这样做。今天,我就记录一下自己的学习过程。

简介

首先需要介绍一下滚动条的组成部分。滚动条包含 track 和 thumb,如下图所示:

track是滚动条的基础,其中的 thumb是用户拖动支页面或章节内的滚动。

还有一件重要的事情要记住,滚动条可以水平或垂直地工作,这取决于设计。另外,在一个多语言网站上工作时,这一点也会发生变化,该网站在从左到右(LTR)和从右到左(RTL)两个方向上工作。

自定义滚动条设计

拥有一个自定义的滚动条曾经是webkit的专利,所以Firefox和IE被排除在游戏之外。我们有一种新的语法,只在Firefox中使用,当它被完全支持时,将使我们的工作更容易。我们先看一下旧的Webkit语法,然后再介绍新的语法。

旧的语法

滚动条的宽度

首先,我们需要定义滚动条的大小。这可以是垂直滚动条的宽度,也可以是水平滚动条的高度。

  1. .section::-webkit-scrollbar { 
  2.     width: 10px; 

有了这一设置,我们就可以设置滚动条本身的样式。

滚动条 track

这代表了滚动条的基础。我们可以通过添加background、shadows、border-radius和border来对它进行造型。

  1. .section::-webkit-scrollbar-track { 
  2.     background-color: darkgrey; 

滚动条 thumb

准备好了滚动条的基础后,我们就需要对滚动条的thumb进行样式设计。这很重要,因为用户可能会拖动这个thumb与滚动条进行交互。

  1. .section::-webkit-scrollbar-thumb { 
  2.     box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 

至此,我们已经介绍了CSS中定制滚动条的老方法。让我们探索一下新的语法。

新语法

Scrollbar Width

正如它所说的,这定义了滚动条的宽度,有两个值auto 和 thin。不好的地方就是,我们不能像webkit的语法那样定义一个具体的数字。

  1. .section { 
  2.   scrollbar-width: thin; 

Scrollbar Color

有了这个属性,我们可以为滚动条 track和thumb定义成对值的颜色。

  1. .section { 
  2.     scrollbar-color: #6969dd #e0e0e0; 
  3.     scrollbar-width: thin; 

尽管这个新语法很简单,但它是有限制的。我们只能添加颜色。我们不能添加shadows``、gradients、rounded`,或任何类似的东西,我们被允许定制的只是颜色。

指定自定义滚动条的范围

要知道的一个重要问题是,在哪里定制滚动条。你希望样式是通用的,对网站上的所有滚动条都有效吗?还是你只想让它用于特定的部分?

使用旧的语法,我们可以编写选择器,而不必将它们附加到元素上,它们将应用于所有可滚动的元素。

  1. ::-webkit-scrollbar { 
  2.     width: 10px; 
  3.  
  4. ::-webkit-scrollbar-track { 
  5.     background-color: darkgrey; 
  6.  
  7. ::-webkit-scrollbar-thumb { 
  8.     box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 

如果你想只适用于一个特定的部分,你需要在选择器之前附加元素。

  1. .section::-webkit-scrollbar { 
  2.     width: 10px; 
  3.  
  4. .section::-webkit-scrollbar-track { 
  5.     background-color: darkgrey; 
  6.  
  7. .section::-webkit-scrollbar-thumb { 
  8.     box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 

对于新的语法,它几乎是一样的。我注意到的是,如果你想要一个通用的样式,它应该被应用于元素,而不是。

  1. html { 
  2.     scrollbar-color: #6969dd #e0e0e0; 
  3.     scrollbar-width: thin; 

我尝试为添加上面的内容,但它没有像预期的那样工作。

现在我们知道了新旧语法的工作原理,接着,我们开始定制一些滚动条设计。

自定义滚动条设计

例1

在研究定制滚动条之前,值得讨论一下Mac OS中的默认样式。下面是它的外观。

  • 滚动条track 的左右两边都有边框,背景色为纯色。
  • 滚动条thumb是圆形的,左右两边都有空间。

对于Windows,它有点不同。

下面是我们根据上面的模拟图来定制滚动条。

  1. .section::-webkit-scrollbar { 
  2.     width: 16px; 
  3.   
  4. .section::-webkit-scrollbar-track { 
  5.     background-color: #e4e4e4; 
  6.     border-radius: 100px; 
  7.   
  8. .section::-webkit-scrollbar-thumb { 
  9.     background-color: #d4aa70; 
  10.     border-radius: 100px; 

为 track 和thumb添加border-radius是必要的,因为它在::webkit-scrollbar上不起作用。

在新的语法中,我们不能调整滚动条的宽度,唯一能做的的是改变 track 和thumb的背景颜色。

  1. .section { 
  2.     scrollbar-color: #D4AA70 #e4e4e4; 

例2

对于这个例子,设计有点重,因为它包含渐变和阴影。我们可以应用内部阴影和渐变来模仿这种效果。来看看怎么做!

  1. .section::-webkit-scrollbar-thumb { 
  2.     background-image: linear-gradient(180deg, #D0368A 0%, #708AD4 99%); 
  3.     box-shadow: inset 2px 2px 5px 0 rgba(#fff, 0.5); 
  4.     border-radius: 100px; 

示例地址:https://codepen.io/shadeed/pen/VwpOReG

例3

我们还可以为 thumb 和track添加边框,这可以帮助我们处理一些棘手的设计。

  1. .section::-webkit-scrollbar-thumb { 
  2.     border-radius: 100px; 
  3.     background: #8070D4; 
  4.     border: 6px solid rgba(0,0,0,0.2); 

基于同样的例子,我们可以重置顶部和底部边界为零,这样thumb获得一个有趣的效果。注意thumb顶部和底部的那些小元素。

示例地址:https://codepen.io/shadeed/pen/qBrGvOx

可以添加悬停效果吗?

我们可以为新旧语法的滚动条thumb添加悬停效果。

  1. /* 旧语法 */ 
  2. .section::-webkit-scrollbar-thumb:hover { 
  3.     background-color: #5749d2; 
  4.  
  5. /* 新语法 */ 
  6. .section { 
  7.     scrollbar-color: #d4aa70 #e4e4e4; 
  8.     transition: scrollbar-color 0.3s ease-out
  9.  
  10. .section:hover { 
  11.     scrollbar-color: #5749d2; 

需要时显示滚动条

创建一个可滚动的元素是可以通过给overflow属性添加一个除visible以外的值。建议使用auto关键字,因为它只在内容超过其容器时才会显示滚动条。

  1. .section { 
  2.     overflow-y: auto; 

可访问性问题

在定制滚动条设计时,请记住在 thumb 和 track之间要有良好的对比,这样它就容易被用户注意。

考虑一下下面这个自定义滚动条的 "坏 "例子。

thumb 的颜色几乎看不出来。这对用户来说不是好事,因为如果他们习惯于通过thumb 滚动,这将增加他们的难度。

作者:ishadeed

译者:前端小智 来源:ishadeed

原文:https://ishadeed.com/article/custom-scrollbars-css/

 

责任编辑:姜华 来源: 大迁世界
相关推荐

2011-05-12 16:30:44

自定义滚动条

2010-09-09 11:25:55

滚动条CSS

2022-07-08 09:27:48

CSSIFC模型

2021-01-12 10:16:42

CSS 容器优化滚动

2024-01-22 09:28:23

CSS前端滚动驱动

2023-11-22 07:47:34

2010-09-30 15:24:31

滚动条Javascript

2022-06-27 08:16:34

JSON格式序列化

2023-08-11 09:16:14

2022-12-07 07:48:36

WebStorm自定义TouchBar

2010-09-14 10:13:53

DIV滚动条

2009-11-05 15:25:36

WCF服务端配置

2022-05-27 07:51:07

自定义无序列表CSS

2023-09-11 09:07:58

CSS隐藏滚动条

2021-10-09 10:50:30

JavaScript编程开发

2022-08-08 08:17:43

类隔离加载器自定义类

2024-11-27 11:07:20

vue计算属性

2011-09-02 10:03:40

jQuery滚动图片

2015-11-06 13:37:25

Git配置文件Linux

2021-01-18 17:46:05

钉钉用户体验评测
点赞
收藏

51CTO技术栈公众号