jQuery iScroll.js移动端滚动条插件使用指南

作者:异步漫步

时间:2026-10-29

浏览:171

本文介绍iScroll.js插件在移动端WebKit浏览器中的应用。详细解析其通过外层隐藏溢出DOM实现滚动的原理,强调仅第一个子元素可被实例化的限制。涵盖HTML加载顺序、JS实例化时机、核心参数配置(如滚动方向、滚动条显示)及常用方法(scrollTo、refresh等),帮助开发者高效实现移动端滚动效果。

文章目录

iScroll插件概述与背景

在日常开发中,开发者常使用jQuery或Lazyload等插件,但这些主要面向PC端。针对移动端,iScroll是最常用的滚动插件之一。尽管该插件功能强大,本文仅对其基础用法进行简要介绍。

iScroll插件的诞生背景

iScroll专为移动版WebKit浏览器设计,主要应用于iPhone、Android等移动设备环境。

iScroll原理与DOM结构要求

iScroll的基本使用方法

iScroll的核心原理是:外层容器需设置overflow:hidden以隐藏溢出内容,内部第一个DOM结构将被实例化为可滚动区域,支持纵向或横向滚动。为保证性能,滚动区域内的DOM结构应尽量简洁,减少嵌套和节点数量,否则可能导致显示异常。推荐的DOM结构如下:


<div id="wrapper">//overflow:hidden;
 <ul>
 //只有第一个DOM结构(ul)被实例化,这个DOM可以纵向或者横向的滚动,
 //多出的内容会被wrapper的样式hidden。
 <li>1</li>
 <li>2</li>
 <li>3</li>
 </ul>
</div>

关键点:只有wrapper容器内的第一个子元素(如ul)能被实例化滚动,且必须配合外层wrapper DOM共同作用。若wrapper内存在多个ul,需确保仅第一个子元素被实例化,例如:


<div id="wrapper">//overflow:hidden;
 <div id="first">
 //只有第一个DOM结构(ul)被实例化,这个DOM可以纵向或者横向的滚动,
 //多出的内容会被wrapper的样式hidden
 <ul>
 <li>1</li>
 <li>2</li>
 <li>3</li>
 </ul>
 <ul>
 <li>4</li>
 <li>5</li>
 <li>6</li>
 </ul>
 </div>
</div>

如上所示,仅first元素会被实例化。注意:内部子元素的ID(如first)可选,但外层wrapper的ID必须指定,因为JS实例化时需引用该ID。


var myScroll = new iScroll("wrapper");

iScroll实例化时机与HTML加载

iScroll的实例化方式

既然说道了实例化,我们应该在什么时候实例化?据说实例化的方法有很多,但是我没用过,我只说一种: (1)在HTML(uw3c.html)页面底部(body之后html之前)加载iscroll.js与当前页面的uw3c.js,这样能确保HTML的DOM结构能加载出来。 (2)在JS插入页面DOM结构和数据之前实例化iScroll,也就是在JS的最开始实例化,因为之后可能会使用JS来插入DOM或者数据,这样以来能确保在插入数据之前iScroll已经实例化了。

HTML结构示例


<html >
 <body>
 ...code...
 </body>
 //插入iscroll.js文件
 <script type="text/javascript" src="js/iscroll.js" > </script >
 //插入本页面JS文件
 <script type="text/javascript" src="js/uw3c.js" > </script >
</html>

JS文件内容示例


var myscroll;
 function iscroll(data){
 //实例化iScroll
 myscroll=new iScroll("wrapper");
 pageData(data);
 }
 function pageData(obj){
 $("body").html(obj);
 myscroll.refresh();//当DOM结构发生变化的时候,需要刷新iScroll
 }
 iscroll("<div>pagedata</div>");

iScroll参数配置详解

iScroll的关键参数配置

实例化iScroll时可传入两个参数:第一个为外层DOM的ID,第二个为配置对象,用于控制滚动效果。


var myscroll=new iScroll("wrapper",{hScrollbar:false});
或者
var opts = {
 vScroll:false,//禁止垂直滚动
 snap:true,//执行传送带效果
 hScrollbar:false//隐藏水平方向上的滚动条
 };
var myscroll = new iScroll("wrapper",opts);

配置对象的具体参数如下,用于精细控制iScroll的行为:


hScroll false 禁止横向滚动 true横向滚动 默认为true
vScroll false 禁止垂直滚动 true垂直滚动 默认为true
hScrollbar false隐藏水平方向上的滚动条
vScrollbar false 隐藏垂直方向上的滚动条
fadeScrollbar false 指定在无渐隐效果时隐藏滚动条
hideScrollbar 在没有用户交互时隐藏滚动条 默认为true
bounce 启用或禁用边界的反弹,默认为true
momentum 启用或禁用惯性,默认为true,此参数在你想要保存资源的时候非常有用
lockDirection false取消拖动方向的锁定,true拖动只能在一个方向上(up/down 或者left/right)

iScroll常用方法与回调函数

iScroll提供的常用方法

在配置对象中可定义回调方法,例如: (1) scrollTo(x, y, time, relative)方法:接收4个参数,分别为X轴滚动距离、Y轴滚动距离、动画时间及是否相对于当前位置。示例:


//在200毫秒的时间内,Y轴向上滚动100像素;
uw3c.scrollTo(0, -100, 200)
//在200毫秒的时间内,相对于当前位置,X轴向左滚动100像素;
uw3c.scrollTo(-100, 0, 200, true)

(2) refresh()方法:当DOM结构发生变化后,需调用此方法刷新iScroll,否则滚动区域可能实例化不准确:


uw3c.refresh();//刷新iScroll

(3) onPosChange:若需监听位置变化,可检查所用iScroll版本是否支持该方法:


onPosChange:function(x,y){
 if(y < -200){
 //如果Y周向上滚动200像素,$("#uw3c")就显示,否则就隐藏。
 $("#uw3c").show();
 }else{
 $("#uw3c").hide();
 }
}

(4)onScrollEnd:滚动结束时触发的事件回调,适用于需要在滚动停止后执行特定操作的场景:


//滚动结束后,执行的方法,滚动后会出现提示框alert("uw3c.com")
onScrollEnd:function(){
 alert("uw3c.com");
}

(5)onRefresh:DOM结构改变并调用refresh后执行的方法。 (6)onBeforeScrollStart:滚动开始前的回调,默认阻止浏览器默认行为。 (7)onScrollStart:滚动开始的回调。 (8)onBeforeScrollMove:内容移动前的回调。 (9)onScrollMove:内容移动的回调。 (10)onBeforeScrollEnd:滚动结束前的回调。 (11)onTouchEnd:手指离开屏幕后的回调。 (12)onDestroy:销毁实例时的回调。

以上内容涵盖了iScroll.js插件的核心使用技巧,旨在帮助开发者更好地掌握移动端滚动条插件的应用。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章