iScroll.js

来源:互联网 发布:seo方案ppt 编辑:程序博客网 时间:2024/05/18 15:53
这个项目的产生完全是因为移动版webkit浏览器(诸如iPhone,iPad,Android 这些系统上广泛使用)
提供了一种本地化的方式来对一个限定了高度和宽度的元素的内容进行滑动。很不幸的是,这种情况下所有的web应用的页面就不能够包含具有position:absolute的头、页尾或者是一个内容可滚动的

中间区域。

最优的iScroll结构如下:

<div id="wrapper">        <ul>               <li></li>               .....        </ul></div>
在这个小例子中,ul标签将会被滚动。iScroll一定要与滚动内容外面的wrapper进行联系才会产生效果。

iscroll 需要两个参数,第一个很简单就是外容器的id,第二个参数是一个参数对象。
通过这个对象可以传入iscroll的各项参数来配置iscroll。
他的参数基本分为四个部分

  • 基础
  • 滚动条
  • 放大缩小
  • 事件回调
以下由笔者整理的iScroll参数以及其代表的意思:
<span style="font-family:FangSong_GB2312;">hScroll: true, //是否水平滚动vScroll: true, //是否垂直滚动x: 0, //滚动水平初始位置y: 0, //滚动垂直初始位置bounce: true, //是否超过实际位置反弹bounceLock: false, //当内容少于滚动是否可以反弹,这个实际用处不大momentum: true, //动量效果,拖动惯性lockDirection: true,//当水平滚动和垂直滚动同时生效时,当拖动开始是否锁定另一边的拖动useTransform: true, //是否使用CSS形变useTransition: false, //是否使用CSS变换topOffset: 0, //已经滚动的基准值(一般情况用不到)checkDOMChanges: false, //是否自动检测内容变化  </span>

checkDOMChanges 这个不是十分靠得住,因为他目前是轮询检测offsetWidth、offsetHeight,然后才去调自身的refresh 重新计算滚动区域,但是有时候只检测这个不是很准..
<span style="font-family:FangSong_GB2312;">// Scrollbar 的相关参数hScrollbar: true, //是否显示水平滚动条vScrollbar: true, //同上垂直滚动条fixedScrollbar: isAndroid, //对andriod的fixedhideScrollbar: isIDevice,  //是否隐藏滚动条fadeScrollbar: isIDevice && has3d, //滚动条是否渐隐渐显scrollbarClass: '', //字定义滚动条的样式名</span>

通过scrollbar这些参数可以配置iscroll的滚动条,通过scrollbarClass可以自己定义一套滚动条的样式。
<span style="font-family:FangSong_GB2312;">// Zoom 放大相关的参数zoom: false, //默认是否放大zoomMin: 1, //放大的最小倍数zoomMax: 4, //最大倍数doubleTapZoom: 2, //双触放大几倍wheelAction: 'scroll', //鼠标滚动行为(还可以是zoom)</span>

这个Zoom我觉得比较好用,对于一个固定显示图片区域的类似应用,可以非常简单的做到固定滚动,包括两指放大的应用。
wheelAction 这个参数是给PC的鼠标滚动定义的,可以定义为滚动鼠标滚轮放大。
<span style="font-family:FangSong_GB2312;">// 自定义 Events 的相关参数 onRefresh: null, //refresh 的回调,关于自身何时调用refresh 后面会继续谈到onBeforeScrollStart: function (e) { e.preventDefault(); }, //开始滚动前的时间回调,默认是阻止浏览器默认行为onScrollStart: null, //开始滚动的回调onBeforeScrollMove: null, //在内容移动前的回调onScrollMove: null, //内容移动的回调onBeforeScrollEnd: null, 在滚动结束前的回调onScrollEnd: null, //在滚动完成后的回调onTouchEnd: null, //手离开屏幕后的回调onDestroy: null, //销毁实例的回调onZoomStart: null,onZoom: null, onZoomEnd: null</span>

通过了解以上参数,你可以非常容易的配置自己的iscroll 应用:
你可以通过onScrollEnd 事件回调在结束滚动后执行一段你自己的代码
你也可以简单的新建一个可以通过双触放大的固定滚动区域。
你也可以什么都不做,只是简单的约定碰到边界是否反弹,等等。
<span style="font-family:FangSong_GB2312;">var myscroll = new iScroll('wrapper', {     hScroll: false, //是否水平滚动     vScroll: true, //是否垂直滚动     y: 10, //滚动垂直初始位置     bounce : false});</span>

当然,在使用时,如果对创建的iscroll 实例保存引用会有很多好处:
你可以在内容改变时,DOM结构发生改变时调用 myscroll.refresh() 来重新计算固定滚动区域的内容高度,从而使得你的iscroll工作正常。
你也可以在你的应用结束时,用过这个引用调用destroy方法来,销毁这个iscroll 实例
等等....
当然,iscroll提供的Api也是非常丰富,所以我们可以通过使用iscroll来做很多webapp的应用,下一篇文章我将会主要介绍一下iscroll的公用调用方法,以及参数的控制。



最后贴一段自己的实现

m

myScroll =  new iScroll('wrapper_home',{snap: true,momentum: false,hScrollbar: false,onScrollEnd: function () {var temp= this.currPageX+1;alert(temp)if(temp < data.recommend.length + 1){document.querySelector('#indicator > li.active').className = '';document.querySelector('#indicator > li:nth-child(' + (temp) + ')').className = 'active';$("#movTitle").text(subStringHome(data.recommend[temp - 1].title,30,true));}}});


0 0
原创粉丝点击