首页 > 其他分享 >CSS3自定义滚动条样式 -webkit-scrollbar

CSS3自定义滚动条样式 -webkit-scrollbar

时间:2022-10-04 22:35:52浏览次数:79  
标签:CSS3 自定义 伪类 轨道 滚动条 scrollbar 按钮 webkit

移动端隐藏scroll滚动条::-webkit-scrollbar

 ::-webkit-scrollbar {/*隐藏滚轮*/

display: none;
}

CSS3自定义滚动条样式 -webkit-scrollbar

 

前言

webkit支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式,所以用处还是挺大的。当然,兼容所有浏览器的滚动条样式目前是不存在的。

演示

来看看这2个滚动条demo:​​ demo1(图片版)​​​、​​demo2(纯CSS3版)​

滚动条组成

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

简洁版

这里就不贴出详细代码了,demo里面可以通过查看源码寻找具体样式的设置。来看看demo2中第二个滚动条的样式

 

1 /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
2 ::-webkit-scrollbar
3 {
4 width: 16px;
5 height: 16px;
6 background-color: #F5F5F5;
7 }
8
9 /*定义滚动条轨道 内阴影+圆角*/
10 ::-webkit-scrollbar-track
11 {
12 -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
13 border-radius: 10px;
14 background-color: #F5F5F5;
15 }
16
17 /*定义滑块 内阴影+圆角*/
18 ::-webkit-scrollbar-thumb
19 {
20 border-radius: 10px;
21 -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
22 background-color: #555;
23

详细设置

定义滚动条就是利用伪元素与伪类,那什么是伪元素和伪类呢?

伪类大家应该很熟悉:link,:focus,:hover,此外CSS3中又增加了许多伪类选择器,如:nth-child,:last-child,:nth-last-of-type()等。

CSS中的伪元素大家以前看过::first-line,:first-letter,:before,:after。那么在CSS3中,伪元素进行了调整,在以前的基础上增加了一个“:”也就是现在变成了“::first-letter,::first-line,::before,::after”,另外CSS3还增加了一个“::selection”。两个“::”和一个“:”在css3中主要用来区分伪类和伪元素。

webkit的伪类和伪元素的实现很强,可以把滚动条当成一个页面元素来定义,再结合一些高级的CSS3属性,比如渐变、圆角、RGBa等等。然后如果有些地方要用图片,可以把图片也可以转换成Base64,不然每次都得加载那个多个图片,增加请求数。

任何对象都可以设置:边框、阴影、背景图片等等,创建的滚动条任然会按照操作系统本身的设置来完成其交互的行为。下面的伪类可以应用到上面的伪元素中。有点小复杂,具体怎么写可以看第一个demo,那里也有注释。

 

1 :horizontal
2 //horizontal伪类适用于任何水平方向上的滚动条
3
4 :vertical
5 //vertical伪类适用于任何垂直方向的滚动条
6
7 :decrement
8 //decrement伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮
9
10 :increment
11 //increment伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮
12
13 :start
14 //start伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的前面
15
16 :end
17 //end伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的后面
18
19 :double-button
20 //double-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。
21
22 :single-button
23 //single-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。
24
25 :no-button
26 no-button伪类表示轨道结束的位置没有按钮。
27
28 :corner-present
29 //corner-present伪类表示滚动条的角落是否存在。
30
31 :window-inactive
32 //适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。
33
34 ::-webkit-scrollbar-track-piece:start {
35 /*滚动条上半边或左半边*/
36 }
37
38 ::-webkit-scrollbar-thumb:window-inactive {
39 /*当焦点不在当前区域滑块的状态*/
40 }
41
42 ::-webkit-scrollbar-button:horizontal:decrement:hover {
43 /*当鼠标在水平滚动条下面的按钮上的状态*/
44

 

 

 

标签:CSS3,自定义,伪类,轨道,滚动条,scrollbar,按钮,webkit
From: https://blog.51cto.com/u_15707676/5731964

相关文章

  • 自定义组件
    1.新建component2.使用2.1在json中加入"usingComponents":{"comp":"/components/comp/comp"}2.2html使用<comp></comp>3.自定义属性值3.1在自定义组......
  • k8s 自定义pod hosts的几种方法
    日常中我们可能会碰到不少关于自定义podhosts的场景,对于不同的k8s版本处理的不一样的以下整理一些参考方法自定义coredns自定义coredns可以直接让解析的域名使用coredn......
  • 自定义UI实战
    自定义UI实战自定义View的流程有些时候会觉得Android中提供的控件不能满足项目的要求,所以就会常常去自定义控件。自定义控件就不免会自定义属性。自定义属性大致需要三个......
  • 如何在Beeline中使用自定义变量
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • Django中六个常用的自定义装饰器
    Django中六个常用的自定义装饰器 目录装饰器作用Django装饰器GroupRequiredAnonymousrequiredSuperuserrequiredAjaxrequiredTimeit自定义功能......
  • Vue Quill富文本自定义上传音频/视频
    有时候项目中可能需要在富文本中上传音频,所以...环境Asp.NetCore文件上传服务(本文不提供/框架很多)Vue2.0功能自定义图片上传自定义视频上传自定义......
  • SAP UI5 OData 请求的自定义 HTTP header 设置方法
    代码如下:oModel.setHeaders({"myHeader1":"value1","myHeader2":"value2"});我们可以先通过如下代码,拿到一个ODataServiceurl对应的ODataModel实例://"ODa......
  • CSS3 的新特性
    CSS3的新特性新增的CSS3特性有兼容性问题,ie9+才支持移动端支持优于PC端1.CSS3新增选择器(1)属性选择器属性选择器可以根据元素特定属性来选择元素。这样就可以不要......
  • 自定义异常
    自定义异常使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception类即可。在程序中使用自......
  • Vue2 自定义属性
    概述vue中不不仅仅有官方提供的指令,用户还可以根据自己的需要进行自定义指令。比如当我们需要一个常用的操作将文字改为蓝色,如果我们需要修改大量标签时,就可以使用自定......