`

移动设备web开发插件iScroll的使用详解

    博客分类:
  • web
web 
阅读更多
移动设备web开发插件iScroll的使用详解
2012-03-01 由 admin
iScroll是一款用于移动设备web开发的一款插件。像缩放、下拉刷新、滑动切换等移动应用上常见的一些效果都可以轻松实现。

iScroll的最新版本是2011.07.03发布的4.1.7版。最新版比以往更顺畅,添加了更多的自定义事件,提供了更高级的可编程性。

使用方法:
DOM结构应尽量保持简洁,避免过多的嵌套。滚动区域为第一个子元素。html代码:




...
...


上面的DOM结构中,ul将是滚动的区域。如果想同时滚动多个区域就要用一个容器把需要滚动的区域包起来。





...
...



...
...



上面的DOM结构中,两个UL会同时滚动。

插件的调用需要在页面完全加载之后。你可以通过以下3种方法来实现。

•设置onDOMContentLoaded事件
•设置onLoad事件
•把调用代码放到页面的最后。
使用onDOMContentLoaded事件实现滚动
如果滚动区域的长宽是固定的,就可以通过onDOMContentLoaded事件来实现滚动。



注意:变量myScroll是全局的,可以在任何时候调用插件。

使用onLoad事件实现滚动
因为DOMContentLoaded事件是载入DOM结构后就会被调用,所以在图片等元素未载入前可能无法确定滚动区域的长宽,此时可以使用onLoad事件来实现。



如上代码,在页面加载完100毫秒后调用插件。如果这个时间后还有元素未完全载入导致无法计算滚动区域长宽,可能会导致错误。但这是目前最好的方法了。

把调用的代码放到最后



...
...



很多javascript大师推荐用这种方法来实现一些需要先加载DOM的特效。因此,在此也可以使用这个方法。但插件开发者似乎并不推荐。因为有可能会出现执行javascript之前没有完全载入页面元素,比如图片。

ISCROLL参数设置
在实例化的时候可以通过传递第二个参数来设置一些效果。


第2个参数是以对象的形式传递的。如上代码中为效果为隐藏滚动条。参数如下:

•hScroll:无论内容是否超出显示区域,都禁用水平方向的滚动条。默认情况下是水平和垂直方向同时出现的。
•vScroll:禁用垂直方向的滚动条。
•hScrollbar:隐藏水平方向的滚动条。
•vScrollbar:隐藏垂直方向的滚动条。
•fixedScrollbar:在IOS中拖动滚动条的时候可能会使内容(或滚动条,)缩小,设置该参数为true可防止该现象。同样适用于Android。Android默认为true,IOS默认为FALSE。
•hideScrollbar:在用户没有操作的时候是否隐藏滚动条。默认为false
•fadeScrollbar:设置滚动条的谈入谈出效果。在hideScrollbar为true的时候有效
•bounce:设置滚动条边界的时候是否有反弹效果,默认为true。
•momentum:设置是否开始惯性,关闭此效果可节省资源
•lockDirection:保持只在两个方向上或滚动(上/下或左/右),在翻屏的时候可使用。不过我在Android上测试的时候似乎没效果,不知道是我测试方法错了还是怎么回事。


各种效果的实现
滚动刷新

'Pull to refresh' demo
这个效果已经应用在Twitter app上和许多苹果应用上使用。

最新版中,作者把滚动刷新和代码复制的功能写成了一个外部插件,可查看DEMO看它是如何工作的。

只需要定义一个pullDownAction()函数,通过ajax来调取数据,然后用refresh方法刷新DOM。请注意增加1秒的延迟来模拟网络阻塞。


放大/缩小

'Zoom' example
通过这个插件,还可以实现滚动区域两指缩放的效果。也可以通过双击来实现缩放。

在第二个参数加添加zoom参数为true就可以实现,通过对zoomMax参数还可以控制缩放的倍数,最大值为4倍

var myScroll = new iScroll('wrapper', { zoom: true,zoomMax:4});
这个效果是通过硬件加速或使用webkit内核的 -webkit-transform:translate3d(0,0,0)的动画CSS3属性来实现。

注意:硬件加速需要消耗大量的资源,有可能会使系统崩溃。


SNAP和SNAP元素

'Carousel' demo
SNAP功能是判断元素是否滑动到指定位置。通过这个效果可以制作花哨的跑马灯效果。

插件会自动分析滚动区域内相同标签或相同大小的元素做为捕捉对象,也可以通过参数指定捕捉的对象

var myScroll = new iScroll('wrapper', {
snap: true,
momentum: false,
hScrollbar: false,
vScrollbar: false });可以通过设置snap参数为指定标签来设定捕捉对象。比如捕捉li标签。

var myScroll = new iScroll('wrapper', {
snap: 'li',
momentum: false,
hScrollbar: false,
vScrollbar: false });在snap属性的值为指定标签的时候,插件会通过 scroller.querySelectorAll(snap_string)的方法来获取对象。所以要注意不要写成"$scroller li",这是错误的。只要写'li'。


自定义滚动条

'Custom scrollbars' demo
iScroll插件允许你自定义滚动条的样式。可以通过css定义一个class,并通过scrollbarClass属性把class的名称传递给iScroll就可以了。

myScroll = new iScroll('wrapper', { scrollbarClass: 'myScrollbar' })
滚动条的DOM结构是一个class名为myScrollBarV的外容器和一个指标组成。可以通过改变这两个元素的样式来自定义滚动条。




.myScrollbarV {
position:absolute;
z-index:100;
width:8px;bottom:7px;top:2px;right:1px
}

.myScrollbarV > div {
position:absolute;
z-index:100;
width:100%;
background:-webkit-gradient(linear, 0 0, 100% 0, from(#f00), to(#900));
border:1px solid #800;
-webkit-background-clip:padding-box;
-webkit-box-sizing:border-box;
-webkit-border-radius:4px;
-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
}内部方法
iScroll还提供了一些公共方法。比如说refresh。在改变滚动区域里内容的时候都必须调用refresh方法。因为iScroll是通过实例化一个全局变量来实现的,所以使用者可在任何情况下调用这些方法。

调用方法: myScroll.name_of_the_function(参数)

refresh方法
iScroll需要知道滚动区域的大小和滚动条才能正常工作。在实例化的时候iScroll会自动计算一次。但如果滚动区域里的内容发生变化后,需要告诉iScroll内容发生了变化。

每次改变元素的高度/宽度或以任何方式修改(如: appendChild或innerHTML的)HTML结构时,浏览器会重新渲染页面。javascript就需要重新分析新的DOM结构和新的属性,有时候,这个不是即时的。

为了确保javascript分析新的页面,可以实例化一个新的iScroll。

ajax('page.php', onCompletion);
function onCompletion () {
setTimeout(function () {
myScroll.refresh();
}, 0);
};JAVASCRIPT SCROLLING
iScroll还提供了scrollTo, scrollToElement和scrollToPage三个方法让你能够通过javascript来控制滚动效果。

scrollTo(x, y, time, relative):在指定的time时间内让内容滚动条x/y的位置。如myScroll.scrollTo(0, -100, 200) 在200毫秒内Y轴向下滚动100像素。 myScroll.scrollTo(0, 10, 200, true)可以实现相对当前位置在200毫秒内Y轴向上滚动10像素的效果。

scrollToElement(element, time):在指定的时间内滚动到指定的元素。如myScroll.scrollToElement('li:nth-child(10)', 100) 在100毫秒内滚动到第10个li元素的位置。第1个参数可以用CSS3中的选择器来筛选元素。

snapToPage(pageX, pageY, time):在200毫秒内从第1页滚动到第2页(0代表第1页,1代表第2页)。这个使用SNAP功能的时候可以调用这个函数。

注销iScroll
通过调用destroy()函数下注销iScroll来释放内存。

myScroll.destroy(); myScroll = null;
LITE版iScroll
如果你只希望在移动设备中使用iScroll,请使用iscroll-lite.js

LITE版是一个精简版,它支持移动设备(没有桌面兼容性)滚动。所占的资源更少。

iScroll的发展方向
•表单域的支持
•缩放的优化
•更好的桌面浏览器的兼容性
•onScrol事件的优化
•加个哈希值的变化
•DOM改变后自动刷新
译自:http://cubiq.org/iscroll-4

转自:移动设备web开发插件iScroll的使用详解

分享到:
评论

相关推荐

    iscroll插件

    iscroll是一款轻量级的JavaScript插件,专为解决移动设备上的滚动问题而设计。在移动设备上,由于触摸事件的处理和原生滚动的复杂性,开发人员经常面临实现流畅滚动的挑战。iScroll通过提供高性能的滚动解决方案,很...

    jQuery上下滑动加载刷新插件iscroll.js

    总结,iscroll.js是一款优秀的JavaScript滚动插件,它的出现极大地简化了网页滚动功能的开发,并为移动设备带来了更加流畅的交互体验。通过理解其工作原理和正确使用,开发者能够构建出更加富有吸引力和用户友好的...

    最牛x的滚动插件 – jquery的iscroll插件

    在Web开发中,随着移动设备的普及,滚动效果已经成为网页设计不可或缺的一部分。在JavaScript的世界里,iscroll插件以其高效、轻量级和跨平台的特性,被誉为“最牛x”的滚动插件。本文将深入探讨iscroll插件的核心...

    iScroll 5 移动端 局部滚动插件

    这款插件由Davide Cassenti开发,旨在解决移动设备上原生滚动的性能问题,提供平滑、流畅的滚动体验。在iOS平台上,由于浏览器对触摸事件的处理方式,原生的滚动可能会出现卡顿或延迟,而iScroll 5通过优化和自定义...

    iScroll滑动插件的使用示例

    iScroll是一款广泛应用于Web开发中的JavaScript滚动插件,由Matteo Spinelli开发。它提供了高性能、平滑的滚动效果,适用于触摸设备和鼠标操作的网页。在移动设备上,由于浏览器内置的滚动机制可能存在性能问题,...

    jquery iscroll下拉插件

    在Web开发中,滚动效果是用户界面不可或缺的一部分,尤其是在移动设备上。为了实现更加流畅、响应式的滚动体验,开发者常常会使用到jQuery iScroll这个强大的库。本文将深入探讨jQuery iScroll下拉刷新插件的使用...

    【iscroll-master移动web绚丽的滚动条

    iscroll的出现,解决了移动设备上原生滚动存在的卡顿、延迟等问题,为网页滚动体验带来了革命性的提升。 iscroll的使用并不复杂,只需引入iscroll.js文件,然后初始化iscroll对象,指定需要滚动的容器元素即可。...

    iscroll.js下载 5.1.3最新版本

    **iscroll.js** 是一个高性能、轻量...总结来说,iscroll.js是一个强大的JavaScript滚动解决方案,特别是在移动Web开发中,iscroll 5.1.3版本带来了更优化的性能和更好的兼容性,能够帮助开发者轻松实现各种滚动效果。

    iscroll5 移动html5开发

    在移动设备上的网页开发中,为了提供更好的用户体验,下拉刷新(Pull to Refresh)功能已经成为一个必备特性。`iscroll5` 是一款专门为HTML5移动开发设计的轻量级滚动库,由Matteo Spinelli开发,它不仅实现了流畅的...

    iscroll框架

    iscroll是一款轻量级的JavaScript库,专为移动设备设计,用于实现高效率的触摸滚动效果。它支持水平和垂直滚动,同时具备首位元素固定的特性,使得在滚动过程中头部和底部元素始终可见,提升了用户体验。iscroll广泛...

    一款基于iscroll5的下拉刷新上拉加载的的插件

    在移动Web应用开发中,提供流畅的用户体验是至关重要的,特别是在处理大数据量或者长列表时。...通过深入理解iscroll5和这个插件的工作原理,你可以更好地优化你的移动Web应用,提升用户的使用体验。

    移动开发iscroll5.2.0 API中文说明.chm

    iscroll最新版中文说明,为了更方便查看iscroll5.2.0版本说明,专门制作了 iscroll5.2.0 API中文说明.chm版,方便各大移动开发爱好了更好的、更方便查看iscroll5.2.0 API。

    iscroll移动app滚动分页demo

    iscroll是由Matteo Spinelli开发的一个轻量级、高性能的JavaScript滚动库,适用于移动设备和桌面浏览器。它支持触摸事件,平滑滚动,以及诸如轮播、滚动条等高级特性。在移动应用中,iscroll常用于替代原生的滚动...

    iscroll开发多层滚动嵌套

    在IT行业中,iscroll是一个广泛使用的JavaScript库,用于实现高性能的滚动效果,特别是在移动设备上。iscroll由Matteo Spinelli开发,它提供了一种轻量级且灵活的方式来处理触摸事件,使得开发者可以轻松创建平滑的...

    iscroll4例子

    iscroll4是一款轻量级的JavaScript滚动插件,由Cubiq组织开发,专门用于处理移动设备上的滚动效果。这个插件主要用于解决在触摸设备上实现流畅、高性能滚动的问题,尤其在处理长列表或者无限滚动场景时效果显著。...

    iscroll demo

    1. **高性能滚动**:iscroll 使用硬件加速技术,确保在移动设备上实现流畅的滚动体验。 2. **多平台支持**:iscroll 兼容各种现代浏览器和移动设备,包括 iOS、Android、Windows Phone 和桌面浏览器。 3. **事件处理...

    iscroll5上拉下拉实例完整demo

    通过这个iscroll5的上拉下拉实例,我们可以学习到如何结合iscroll5实现移动Web页面的高级滚动效果,这对于开发响应式、交互丰富的移动应用是非常有价值的。在实际项目中,开发者可以根据需求进行适当的定制和扩展。

    iscroll-5.1.3

    这个插件的设计理念是跨平台兼容,能够在桌面、移动设备以及智能电视等多种环境上无缝运行,确保在各种新旧设备上都能实现平滑流畅的滚动效果。 在JavaScript开发中,特别是在处理触摸事件和动态内容加载时,滚动...

    iscroll组件

    2. **多平台支持**:iscroll不仅支持现代桌面浏览器,还全面兼容各种移动设备,包括iOS、Android、Windows Phone等,确保了跨平台的一致性。 3. **触摸事件支持**:iscroll能够监听并处理触摸事件,如滑动、捏合...

    原生 iscroll-4

    **原生 iScroll-4 知识点详解** **一、什么是 iScroll-4** iScroll 是一个轻量级的JavaScript库,专为解决移动设备上的滚动问题而设计。...理解和熟练掌握iScroll-4的使用,对提升Web开发中的交互设计能力大有裨益。

Global site tag (gtag.js) - Google Analytics