浏览器滚动条美化

前言

作为一个前端,在编辑页面的时候,有的时候遇到滚动条,会觉得浏览器自带的滚动条样式太丑,可能会与设计的美美的页面格格不入,但是滚动效果又必须存在。那么,这个时候就会想到要是能改变滚动条的样式,或者将滚动条隐藏掉更好一些。那么,怎样做到改变滚动条的样式呢?

这里介绍的是css3的一个样式,-webkit-scrollbar。

webkit支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式。但是因为他是css3样式,所有浏览器兼容性还是存在问题的。

滚动条组成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
=======================================chrome=======================================
:horizontal 伪类适用于任何水平方向上的滚动条

:vertical 伪类适用于任何垂直方向的滚动条

:decrement 伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮

:increment 伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮

:start 伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的前面

:end 伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的后面

:double-button 伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。

:single-button 伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。

:no-button 伪类表示轨道结束的位置没有按钮。

:corner-present 伪类表示滚动条的角落是否存在。

:window-inactive 适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。

::-webkit-scrollbar 滚动条整体部分
::-webkit-scrollbar-thumb 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
::-webkit-scrollbar-track 滚动条的轨道(里面装有Thumb)
::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)
::-webkit-scrollbar-corner 边角,即两个滚动条的交汇处
::-webkit-resizer 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件

::-webkit-scrollbar-track-piece:start {
/*滚动条上半边或左半边*/
}


::-webkit-scrollbar-thumb:window-inactive {
/*当焦点不在当前区域滑块的状态*/
}

::-webkit-scrollbar-button:horizontal:decrement:hover {
/*当鼠标在水平滚动条下面的按钮上的状态*/
}
=======================================chrome=======================================

=======================================IE=======================================
{
/三角箭头的颜色/
scrollbar-arrow-color: #c0c4cc;
/滚动条滑块按钮的颜色/
scrollbar-face-color: #A2A2A3;
/滚动条整体颜色/
scrollbar-highlight-color: #A2A2A3;
/滚动条阴影/
scrollbar-shadow-color: #A2A2A3;
/滚动条轨道颜色/
scrollbar-track-color: #f4f4f5;
/滚动条3d亮色阴影边框的外观颜色——左边和上边的阴影色/
scrollbar-3dlight-color:#A2A2A3;
/滚动条3d暗色阴影边框的外观颜色——右边和下边的阴影色/
scrollbar-darkshadow-color: #A2A2A3;
/滚动条基准颜色/
scrollbar-base-color: #f4f4f5;
}
.el-table__body-wrapper,.el-menu{
/IE下隐藏/
-ms-overflow-style:none;
}

.el-table__body-wrapper:hover,.el-menu:hover{
/IE下显示/
-ms-overflow-style:auto;
}

=======================================IE=======================================

实例

隐藏滚动条

1
2
3
4
5
6
7
8
9
10
11
/* .box为当前出现滚动条的容器 隐藏浏览器自带滚动条 */
.box::-webkit-scrollbar {
display: none
}


<body style="overflow-x:hidden">
没有垂bai直滚动条duzhi
<body style="overflow-y:hidden">
没有滚动条
<body style="overflow-x:hidden;overflow-y:hidden">或<body style="overflow:hidden">

自定义滚动条

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS3自定义滚动条-轩枫阁</title>
<style>
header
{
font-family: 'Lobster', cursive;
text-align: center;
font-size: 25px;
}

#info
{
font-size: 18px;
color: #555;
text-align: center;
margin-bottom: 25px;
}

a{
color: #074E8C;
}

.scrollbar
{
margin-left: 30px;
float: left;
height: 300px;
width: 65px;
background: #F5F5F5;
overflow-y: scroll;
margin-bottom: 25px;
}

.force-overflow
{
min-height: 450px;
}

#wrapper
{
text-align: center;
width: 500px;
margin: auto;
}

/*
* STYLE 1
*/

#style-1::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px;
background-color: #F5F5F5;
}

#style-1::-webkit-scrollbar
{
width: 12px;
background-color: #F5F5F5;
}

#style-1::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #555;
}

/*
* STYLE 2
*/

#style-2::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px;
background-color: #F5F5F5;
}

#style-2::-webkit-scrollbar
{
width: 12px;
background-color: #F5F5F5;
}

#style-2::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #D62929;
}

/*
* STYLE 3
*/

#style-3::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}

#style-3::-webkit-scrollbar
{
width: 6px;
background-color: #F5F5F5;
}

#style-3::-webkit-scrollbar-thumb
{
background-color: #000000;
}

/*
* STYLE 4
*/

#style-4::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}

#style-4::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-4::-webkit-scrollbar-thumb
{
background-color: #000000;
border: 2px solid #555555;
}


/*
* STYLE 5
*/

#style-5::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}

#style-5::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-5::-webkit-scrollbar-thumb
{
background-color: #0ae;

background-image: -webkit-gradient(linear, 0 0, 0 100%,
color-stop(.5, rgba(255, 255, 255, .2)),
color-stop(.5, transparent), to(transparent));
}


/*
* STYLE 6
*/

#style-6::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}

#style-6::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-6::-webkit-scrollbar-thumb
{
background-color: #F90;
background-image: -webkit-linear-gradient(45deg,
rgba(255, 255, 255, .2) 25%,
transparent 25%,
transparent 50%,
rgba(255, 255, 255, .2) 50%,
rgba(255, 255, 255, .2) 75%,
transparent 75%,
transparent)
}


/*
* STYLE 7
*/

#style-7::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
border-radius: 10px;
}

#style-7::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-7::-webkit-scrollbar-thumb
{
border-radius: 10px;
background-image: -webkit-gradient(linear,
left bottom,
left top,
color-stop(0.44, rgb(122,153,217)),
color-stop(0.72, rgb(73,125,189)),
color-stop(0.86, rgb(28,58,148)));
}

/*
* STYLE 8
*/

#style-8::-webkit-scrollbar-track
{
border: 1px solid black;
background-color: #F5F5F5;
}

#style-8::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-8::-webkit-scrollbar-thumb
{
background-color: #000000;
}


/*
* STYLE 9
*/

#style-9::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}

#style-9::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-9::-webkit-scrollbar-thumb
{
background-color: #F90;
background-image: -webkit-linear-gradient(90deg,
rgba(255, 255, 255, .2) 25%,
transparent 25%,
transparent 50%,
rgba(255, 255, 255, .2) 50%,
rgba(255, 255, 255, .2) 75%,
transparent 75%,
transparent)
}


/*
* STYLE 10
*/

#style-10::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
border-radius: 10px;
}

#style-10::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-10::-webkit-scrollbar-thumb
{
background-color: #AAA;
border-radius: 10px;
background-image: -webkit-linear-gradient(90deg,
rgba(0, 0, 0, .2) 25%,
transparent 25%,
transparent 50%,
rgba(0, 0, 0, .2) 50%,
rgba(0, 0, 0, .2) 75%,
transparent 75%,
transparent)
}


/*
* STYLE 11
*/

#style-11::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
border-radius: 10px;
}

#style-11::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-11::-webkit-scrollbar-thumb
{
background-color: #3366FF;
border-radius: 10px;
background-image: -webkit-linear-gradient(0deg,
rgba(255, 255, 255, 0.5) 25%,
transparent 25%,
transparent 50%,
rgba(255, 255, 255, 0.5) 50%,
rgba(255, 255, 255, 0.5) 75%,
transparent 75%,
transparent)
}

/*
* STYLE 12
*/

#style-12::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.9);
border-radius: 10px;
background-color: #444444;
}

#style-12::-webkit-scrollbar
{
width: 12px;
background-color: #F5F5F5;
}

#style-12::-webkit-scrollbar-thumb
{
border-radius: 10px;
background-color: #D62929;
background-image: -webkit-linear-gradient(90deg,
transparent,
rgba(0, 0, 0, 0.4) 50%,
transparent,
transparent)
}

/*
* STYLE 13
*/

#style-13::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.9);
border-radius: 10px;
background-color: #CCCCCC;
}

#style-13::-webkit-scrollbar
{
width: 12px;
background-color: #F5F5F5;
}

#style-13::-webkit-scrollbar-thumb
{
border-radius: 10px;
background-color: #D62929;
background-image: -webkit-linear-gradient(90deg,
transparent,
rgba(0, 0, 0, 0.4) 50%,
transparent,
transparent)
}

/*
* STYLE 14
*/

#style-14::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.6);
background-color: #CCCCCC;
}

#style-14::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-14::-webkit-scrollbar-thumb
{
background-color: #FFF;
background-image: -webkit-linear-gradient(90deg,
rgba(0, 0, 0, 1) 0%,
rgba(0, 0, 0, 1) 25%,
transparent 100%,
rgba(0, 0, 0, 1) 75%,
transparent)
}

/*
* STYLE 15
*/

#style-15::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.1);
background-color: #F5F5F5;
border-radius: 10px;
}

#style-15::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-15::-webkit-scrollbar-thumb
{
border-radius: 10px;
background-color: #FFF;
background-image: -webkit-gradient(linear,
40% 0%,
75% 84%,
from(#4D9C41),
to(#19911D),
color-stop(.6,#54DE5D))
}

/*
* STYLE 16
*/

#style-16::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.1);
background-color: #F5F5F5;
border-radius: 10px;
}

#style-16::-webkit-scrollbar
{
width: 10px;
background-color: #F5F5F5;
}

#style-16::-webkit-scrollbar-thumb
{
border-radius: 10px;
background-color: #FFF;
background-image: -webkit-linear-gradient(top,
#e4f5fc 0%,
#bfe8f9 50%,
#9fd8ef 51%,
#2ab0ed 100%);
}


</style>
</head>
<body>
<div id="wrapper">
<div class="scrollbar" id="style-default">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-1">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-2">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-3">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-4">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-5">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-6">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-7">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-8">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-9">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-10">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-11">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-13">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-14">
<div class="force-overflow"></div>
</div>

<div class="scrollbar" id="style-15">
<div class="force-overflow"></div>
</div>
</div>
</body>
</html>

vue-ant-design滚动条美化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*滚动条的宽度*/
.ant-drawer-wrapper-body::-webkit-scrollbar {
width: 4px;
height: 105px;
}


/*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
.ant-drawer-wrapper-body::-webkit-scrollbar-track {
width: 4px;
height: 80%;
background-color: #E0E6F3;
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
border-radius: 2em;
}

/*滚动条的设置*/
.ant-drawer-wrapper-body::-webkit-scrollbar-thumb {
background-color: #A4A9C1;
background-clip: padding-box;
min-height: 28px;
max-height: 105px;
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
border-radius: 2em;
/* display: none; */
}

/*滚动条移上去的背景*/

/* .ant-drawer-wrapper-body::-webkit-scrollbar-thumb:hover {
background-color: #fff;
} */

vue滚动条组件

https://github.com/Binaryify/vue-custom-scrollbar

https://github.com/mercs600/vue2-perfect-scrollbar

https://github.com/YvesCoding/vuescroll

https://github.com/YvesCoding/magic-scroll

https://github.com/yansern/vue-scrolly

https://github.com/codebender828/vue-simple-scrollbar

https://github.com/huangjincq/vue-better-scroll

https://github.com/ustbhuangyi/better-scroll ts

https://github.com/BosNaufal/vue2-scrollbar

https://github.com/Undrizzle/vue-nice-scrollbar

https://github.com/noeldelgado/gemini-scrollbar