在开发过程中为了保持界面样式的一致性,需要自定义scrollbar的样式,可是只有chrome可以定义样式,IE只能设置颜色,火狐是直接不可以设置,于是就找了这个库,它是github开源的,但没有中文文档,只有英文的,下面是我翻译的中文文档,英语水平不好,有错请见谅,可以评论告诉我修改。
源码以及英文api:GitHub地址:点我点我
使用中的一些常见问题可以在这个官方wiki中找到:点我点我
注意
除非不得不使用自定义滚动条,否则始终建议使用浏览器自带的滚动条。
支持chrome、IE11、edge、火狐等浏览器,其中IE11中的scrollbar在使用时会有一点渲染问题,缺点是不支持IE10以下的IE和edge。其他的旧版浏览器我没有测试。
文档开始
安装
npm
npm是安装和使用perfect-scrollbar的最佳方法。它已注册为perfect-scrollbar。
1 | $ npm install perfect-scrollbar |
说明书下载
您可以从Releases手动下载perfect-scrollbar 。
在GitHub上下载
如果要使用插件的开发版本,请手动从源代码进行构建。开发版本可能不稳定。网址在这里
1 2 3 4 | $ git clone https: //github.com/mdbootstrap/perfect-scrollbar.git $ cd perfect-scrollbar $ npm install $ npm run build |
如何使用
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 | 首先,请检查container元素是否符合要求,并且已导入主CSS。 <style> #container { position: relative; width: 600px; height: 400px; } </style> <link rel= "stylesheet" href= "css/perfect-scrollbar.css" > 通过ES模块导入: import PerfectScrollbar from 'perfect-scrollbar' ; 或在browser中(直接引入js文件): <script src= "dist/perfect-scrollbar.js" ></script> 初始化: const container = document.querySelector( '#container' ); const ps = new PerfectScrollbar(container); // or just with selector string const ps = new PerfectScrollbar( '#container' ); 可以使用option进行初始化。(推荐使用这种方式,因为这样可以更细致的设置,设置方法在下面) const ps = new PerfectScrollbar( '#container' , { wheelSpeed: 2, wheelPropagation: true , minScrollbarLength: 20 }); 如果容器或内容的大小发生变化,请使用update进行更新。 ps.update(); 如果要销毁滚动条,请使用destroy。 ps.destroy(); ps = null ; // to make sure garbages are collected 如果您想滚动到某个地方,只需更新scrollTop。 const container = document.querySelector( '#container' ); container.scrollTop = 0; 您还可以案例中获取有关如何使用插件的信息 。案例网址在这里:点我点我 options (通过在option中设置以下属性可以更细致的设置scrollbar的样式) handlers {String[]} 它是处理程序列表,用于滚动元素。(这里面是可以操作滚动条的方式) 默认:[ 'click-rail' , 'drag-thumb' , 'keyboard' , 'wheel' , 'touch' ] wheelSpeed {Number} 应用于鼠标滚轮事件的滚动速度。 默认:1 wheelPropagation {Boolean} 如果这个选项为 true ,当滚动到达底端,鼠标滚轮事件将被传给父元素。 默认: false swipeEasing {Boolean} 如果此选项为 true ,将简化滑动滚动。 默认: true minScrollbarLength {Number?} 设置为整数值时,滚动条的拇指部分(就是滚动条的高亮部分)不会缩小到该像素数以下(最小宽度)。 默认: null maxScrollbarLength {Number?} 设置为整数值时,滚动条的拇指部分将不会扩展到该数量的像素。 默认: null scrollingThreshold {Number} 这将设置阈值,ps--scrolling-x并ps--scrolling-y保留类别。在默认CSS中,无论悬停状态如何,它们都会显示滚动条。单位是毫秒。(scrollbar的响应时间) 默认:1000 useBothWheelAxes {Boolean} 设置为 true 时,只有一个(垂直或水平)滚动条可见,然后垂直和水平滚动都会影响该滚动条。 默认: false suppressScrollX {Boolean} 设置为 true 时,无论内容宽度如何,X轴上的滚动条都将不可用。 默认: false suppressScrollY {Boolean} 设置为 true 时,无论内容高度如何,Y轴上的滚动条都不可用。 默认: false scrollXMarginOffset {Number} 在不启用X轴滚动条的情况下,内容宽度可以超过容器宽度的像素数。允许一些“摆动空间”或“偏移中断”,因此仅由于几个像素而不能启用X轴滚动条。 默认:0 scrollYMarginOffset {Number} 在不启用Y轴滚动条的情况下,内容高度可以超过容器高度的像素数。允许一些“摆动空间”或“偏移中断”,因此仅由于几个像素而不能启用Y轴滚动条。 默认:0 Events 事件 自定义事件。 container.addEventListener( 'ps-scroll-x' , () => ...); ps-scroll-y 此事件在y轴在任一方向上滚动。 ps-scroll-x 此事件在x轴在任一方向上滚动。 ps-scroll-up 向上滚动时,该事件触发。 ps-scroll-down 向下滚动时,此事件触发。 ps-scroll-left 向左滚动时,该事件触发。 ps-scroll-right 向右滚动时,该事件触发。 ps-y-reach-start 滚动此事件在到达y轴的开始。 ps-y-reach-end 滚动此事件在到达y轴(对于无限滚动有用)的端部。 ps-x-reach-start 滚动此事件在到达x轴的开始。 ps-x-reach-end 滚动此事件在到达x轴的端部。 您也可以通过观看REACH状态reach属性。 const ps = new PerfectScrollbar(...); console.log(ps.reach.x); // => 'start' or 'end' or null console.log(ps.reach.y); // => 'start' or 'end' or null 文档结束 关于样式(颜色透明度等),可以通过设置.ps__rail-y等的css进行设置,注意加!important, 最后是我测试用的demo <!DOCTYPE html> <html> <head> <title>perfect-scrollbar</title> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <link href= "css/perfect-scrollbar.css" rel= "stylesheet" > <style> #device_scroll { float : left; background-color: #0F152F; width: 517px; height: 521px; color: white; /*overflow: hidden; position: relative; 是必须有的*/ overflow: hidden; position: relative; display: none; } /*滚动条*/ /*y 是纵轴*/ /*scrollbar背景*/ .ps__rail-y { background-color: red; } /*静置时的样式*/ .ps__thumb-y { background-color: green !important; } /*动态样式*/ .ps .ps__rail-y:hover, .ps .ps__rail-y:focus, .ps .ps__rail-y.ps--clicking { background-color: red; opacity: 0.9; } </style> </head> <body> <div id= "device_scroll" > <div class = "" > dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr />dddddddd <hr /> </div> </div> <script src= "js/perfect-scrollbar.js" type= "text/javascript" charset= "utf-8" ></script> <script type= "text/javascript" > //初始化滚动条scrollbar const ps = new PerfectScrollbar( '#device_scroll' , { //滚动速度,默认为1 wheelSpeed: 1, //最小宽度 单位px suppressScrollX: true , //到达最低端时告知父元素 wheelPropagation: true , //最小宽度 minScrollbarLength: 20 }); </script> </body> </html> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2019-11-29 教你搭建基于typescript的vue项目
2019-11-29 【AST篇】教你如何编写 Eslint 插件