首页 > 其他分享 >Optiscroll-轻量级纯Js滚动条美化插件

Optiscroll-轻量级纯Js滚动条美化插件

时间:2024-12-28 16:58:38浏览次数:1  
标签:插件 滚动 Js 滚动条 optiscroll 像素 scroll 轻量级

Optiscroll是一款轻量级纯Js滚动条美化插件。该滚动条美化插件可以隐藏原生的滚动条,并生成用户自定义样式的滚动条。它的特点还有:

  • 轻量级,没有任何依赖,压缩后的版本仅9kb。
  • 性能高度优化。
  • 支持水平和垂直滚动条。
  • 支持嵌套滚动条。
  • 支持自定义事件。
  • 可以制作scrollTo和scrollIntoView动画。
  • 滚动区域内容改变时自动更新滚动条。
  • 修复iOS页面弹跳问题。
  • 可以工作在包括IE9+的所有现代浏览器中。
  • 可以作为jquery插件来使用。

 

在线预览    下载

 使用方法

使用该滚动条插件需要在页面中引入optiscroll.css,optiscroll.js,或者作为jQuery插件来使用,引入jquery和jquery.optiscroll.js文件。

< link rel="stylesheet" href="optiscroll.css">

< script src="optiscroll.js">

< script src="jquery.optiscroll.js">                  
 HTML结构

为你需要美化滚动条的容器添加.optiscroll class。

< div id="scroll" class="optiscroll">
    
     
 初始化插件

可以通过下面的方法来初始化该滚动条插件。

// 纯js
var element = document.querySelector( '#scroll' )
var myOptiscrollInstance =  new Optiscroll(element);

// jQuery插件
$( '#scroll' ).optiscroll()               

 配置参数

 全局参数
参数名称 默认值 描述
scrollMinUpdateInterval 25 (ms) 默认情况下,滚动条会每秒更新40次,次数越多,滚动轨道更新越不频繁。最小值为16,表示滚动轨道每秒更新60次。
checkFrequency 1000 (ms) 检测滚动区域内容更新的时间。要禁止检测,将值设置为0。
 实例参数
参数名称 默认值 描述
preventParentScroll false 当滚动条到达底部或顶部时防止父容器滚动。在iOS中可以防止页面跳动。
forceScrollbars false 在iOS, Android 和 OSX系统中使用自定义滚动条。
scrollStopDelay 300 (ms) 假定滚动条停止的时间,然后触发scrollstop事件。
maxTrackSize 95 (%) 滚动条轨道的最大尺寸。
minTrackSize 5 (%) 滚动条轨道的最小尺寸。
draggableTracks true 是否允许拖拽滚动条轨道。
autoUpdate true 是否允许滚动条在容器内容更新后自动更新。
classPrefix 'optiscroll-' 自定义class前缀。

例如:

// 改变滚动条的尺寸 - js版本
var myOptiscrollInstance =  new Optiscroll(element, { maxTrackSize: 50, minTrackSize: 20 });

// 强制在移动设备上使用自定义滚动条 - jQuery插件
$( '#scroll' ).optiscroll({ forceScrollbars:  true });                  

 方法

  • scrollTo ( destX, destY [, duration] ):滚动到指定位置,并带有平滑过渡的动画效果。如果你只需要在一个轴上滚动,另外一个轴设置为false。默认情况下动画时间根据距离来计算,你也可以设置滚动的动画时间。
    • destX:允许值:number (px), leftrightfalse
    • destY:允许值:number (px), topbottomfalse
    • duration:允许值:number (ms), auto

    例如:

    // 垂直滚动500像素
    myOptiscrollInstance.scrollTo( false , 500);
    
    /* The jQuery plugin allows you to call a method in two ways */
    
    // 100毫秒时间内水平滚动到右边
    $( '#scroll' ).data( 'optiscroll' ).scrollTo( 'right' ,  false , 100);
    
    //水平滚动500像素,垂直滚动到底部
    $( '#scroll' ).optiscroll( 'scrollTo' , 500,  'bottom' ,  'auto' );
  • scrollIntoView (elem [, duration, delta]):在滚动区域视图内进行滚动。对齐方式为最近的边。默认情况下动画时间根据距离来计算。delta是到边部的可选距离,单位像素。每条边的距离都可以定义。
    • element:允许值:DOM节点, jQuery元素, 字符串 (选择器)。
    • duration:允许值:number (ms), auto
    • delta:允许值:number (px), object with top, left, right, bottom numbers。

    例如:

    // 在ID为anchor-1的容器中滚动
    myOptiscrollInstance.scrollIntoView( '#anchor-1' );
    
    /* The jQuery plugin allows you to call a method in two ways */
    
    // 在容器中滚动指定的jquery元素,时间500毫秒,距离为到距离边部20像素
    var $el = $( '.my-element' ).last();
    $( '#scroll' ).data( 'optiscroll' ).scrollIntoView($el, 500, 20);
    
    // 在容器中滚动指定的jquery元素,距离为距底部20像素,距右侧30像素
    $( '#scroll' ).optiscroll( 'scrollIntoView' , $el,  'auto' , { bottom: 20, right: 30 });
  • update ():手动更新滚动条。
  • destroy ():销毁滚动条插件。

 事件

每一个滚动条实例在和用户交互时都会触发一些事件。每一个事件都包含一个detail属性和一些有用的数据。

事件 触发时间
sizechange 当改变滚动容器的clientWidth/clientHeight,或滚动区域的rollWidth/scrollHeight时触发。
scrollstart 用户开始滚动时触发。
scrollstop 当停止滚动时触发。
scrollreachedge 当滚动到任何一条边部时触发。
scrollreachtop 滚动到顶部时触发。
scrollreachbottom 滚动到底部时触发。
scrollreachleft 滚动到左侧时触发。
scrollreachright 滚动到右侧时触发。

Detail对象属性:

名称 描述
scrollbar{V/H}.percent 滚动的百分比,0-100之间。
scrollbar{V/H}.position 滚动条的位置距离左上角的比例,0-1之间。
scrollbar{V/H}.size 滚动条的宽高比,0-1之间。
scrollTop 滚动条距离顶部的距离,单位像素。
scrollLeft 滚动条距离底部的距离,单位像素。
scrollBottom 滚动条距离左侧的距离,单位像素。
scrollRight 滚动条距离右侧的距离,单位像素。
scrollWidth 滚动条的宽度,单位像素。
scrollHeight 滚动条的高度,单位像素。
clientWidth 滚动元素的宽度,单位像素。
clientHeight 滚动元素的高度,单位像素。

例如:

// plain JS listener
document.querySelector( '#scroll' ).addEventListener( 'scrollreachtop' ,  function (ev) {
    console.log(ev.type)  // outputs 'scrollreachtop'
    console.log(ev.detail.scrollTop)  // outputs scroll distance from top
    console.log(ev.detail.scrollbarV.percent)  // outputs vertical scrolled %
});

// jQuery listener
$( '#scroll' ).on( 'scrollstop' ,  function (ev) {
    console.log(ev.type)  // outputs 'scrollstop'
    console.log(ev.detail.scrollBottom)  // outputs scroll distance from bottom
    console.log(ev.detail.scrollbarH.percent)  // outputs horizontal scrolled %
});

 

标签:插件,滚动,Js,滚动条,optiscroll,像素,scroll,轻量级
From: https://www.cnblogs.com/mybook000/p/18637660

相关文章

  • 插件用户隐私保护说明内容介绍
    插件用户隐私保护说明内容介绍插件用户隐私保护说明包括下列板块,其中具体的说明仅为示例。插件基本信息包括插件名称、插件提供方名称。插件名称:客服助手插件提供方名称:深圳市腾讯计算机系统有限公司插件处理的信息开发者需在此板块声明所处理的用户信息,微信会根据......
  • Rules Of JSX & 渲染列表 & ‼️State
    JSX只能拥有一个root元素,即只能有一个父元素。React不会渲染true或false到界面上,但会渲染0,1。isOpen&&<p>Hello!</p>上述短路表达式意为:只有当isOpen为真时,才会执行第二部分内容,返回第二部分内容。如果isOpen为假且它的值为0,表达式会返回0这个值本身。......
  • ASP.NET MVC,Angularjs和Vue.js呈现文件图片
    周未了,又来博客园写随笔,分享程序方法,技巧,经验,把平常时常用的开发框架,语言,脚本集中总结。前段时写了些上传文件,如图片,二进制存储,后来又把上传的二进制经管理实现转存为原文件,图片缩略图等。今天把转换为文件,在网页呈现出来。决定使用ASP.NETMVC,Angularjs,vue,代码可直接写在页面......
  • node.js讲座信息管理系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于讲座信息管理系统的研究,现有研究主要以大型活动管理系统中的部分功能涵盖为主,专门针对讲座这一特定场景下全面功能整合的信息管理系统的研究较少。......
  • node.js毕设 北罗镇中学校务通管理系统 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于校务通管理系统的研究,现有研究主要以大型综合院校的管理系统为主,专门针对北罗镇中学这种规模相对较小的校务通管理系统的研究较少。在国内外的教育......
  • node.js基于协同过滤算法的企业入职评测系统服务端程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于企业入职评测系统的研究,现有研究主要以传统的评测模式为主,如单纯依靠简历筛选、简单面试等方式进行人员筛选1。专门针对利用协同过滤算法构建企业入......
  • node.js毕设 测评与咨询平台 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于测评与咨询平台的研究,现有研究主要以单一功能的测评或咨询平台为主,如仅专注于某一特定领域的心理测评,或者是一般性的咨询平台服务。专门针对整合学......
  • 人才公寓系统|Java|SSM|JSP|
                  【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetom......
  • IDE 使用技巧与插件推荐:提升开发效率的秘籍
    在软件开发的世界里,集成开发环境(IDE)是开发者的得力助手。熟练掌握IDE的使用技巧并搭配实用的插件,能大幅提升开发效率。本文将以主流的IDE(如IntelliJIDEA、Eclipse、VisualStudioCode等)为例,分享一些通用的使用技巧,并推荐几款实用插件。一、IDE使用技巧(一)快捷键操作......
  • 人才公寓系统|Java|SSM|JSP| 
                  【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetom......