`
liu_jiaqiang
  • 浏览: 20692 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iScroll.js的用法

 
阅读更多

iScroll.js的用法

概要iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生完全是因为移动版webkit浏览器(诸如iPhone,iPad,Android 这些系统上广泛使用)提供了一种本地化的方式来对一个限定了高度和宽度的元素的内容进行滑动。很不幸的是,这种情况下所有的web应用的页面就不能够包含具有position:absolute的头、页尾或者是一个内容可滚动的中间区域。


然而,Android系统最新修订版已经可以支持这种功能了(尽管支持的力度还不是特别好),Apple公司似乎不太情愿将one-finger滑动事件运用到div元素上。


除了以前版本的iScroll的特性以外,iScroll 4还包括如下的特性:

     (1)缩放(Pinch/Zoom)

    (2)拉动刷新(Pull up/down to refresh)

    (3)速度和性能提升

    (4)精确捕捉元素

    (5)自定义滚动条

      友情提示:iScroll 4并不是iScroll 3的简易替代版本,API文档已经不一样了。同时考虑到此版本正处于测试期,一些API可能会有细微的变化。

使用指南

在此文档中你会发现很多例子来教会你如何快速上手iScroll脚本库。参看文中的demo小例子并仔细阅读此文档,可能有点小无聊,但是这篇文章中却是iScroll这个脚本库的精髓之所在哦。

iScroll需要对所要进行滚动的元素进行初始化,并且不限定一个页面中使用iScroll的元素的个数(这里不考虑您的硬件配置)。滚动元素中内容的类型和长度在一定程度上将会影响iScroll脚本库里
可以同时使用的元素的个数。

使用iScroll这个脚本库时,DOM树的结构要足够简单,移除不必要的标签,尽量避免过多的标签嵌套使用。

最优的使用iScroll的结构如下所示:

 

<div id="wrapper">

        <ul>

               <li></li>

               .....

        </ul>

</div>

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

 

【注意事项】:

只有wrapper里的第一个子元素才可以滚动,如果你想要更多的元素可以滚动,那么你可以试试下面的这种写法:

 

<div id="wrapper">

        <div id="scroller">

               <ul>

                    <li></li>

                     ...

                </ul>

                <ul>

                         <li></li>

                          ...

                </ul>

       </div>

</div>

 在这个例子中,scroller这个元素可以滚动,即便它包含两个ul元素

 

在这个例子中,scroller这个元素可以滚动,即便它包含两个ul元素

iScroll必须在调用之前实例化,你可以在下面几种情况下对iScroll进行实例化:

    (1)onDOMContentLoaded

    (2)onLoad

    (3)以内联inline方式

下面我们逐个来讲讲这三种用法的优缺点

ONDOMContentLoaded

        适用于滚动内容只包含文字、图片,并且所有的图片都有固定的尺寸

        使用方法:(在head标签中添加如下代码)

 

<script src="iscroll.js"></script>

        <script>

                 var myscroll;

                function loaded(){

                           myscroll=new iScroll("wrapper");

                 }

               window.addEventListener("DOMContentLoaded",loaded,false);

         </script>

          注意:myscroll这个变量是全局的,因此你可以在任何地方调用它的函数onLoad

        有些时候在DOMContentLoaded的状态下就初始化iScroll其实是有点草率的,因此此时页面的资源可能还没有全部加载 完毕。如果你遇到了一些很怪异的行为可以试试下面的写法:

<script src="iscroll.js"><script>

        <script>

                    var myscroll;

                    function loaded(){

                   setTimeout(function(){

                            myscroll=new iScroll("wrapper");

                     },100 );

                }

                window.addEventListener("load",loaded,false);

         </script>

     这种情况下iScroll会在页面资源(包括图片)加载完毕100ms之后得到初始化,这应该是一种比较安全的调用iScroll的方式。

inline初始化

这种情况会在页面加载到js的时候就进行调用,此方法不推荐使用,但是很多javascript的大牛都在用这种方式,我又有什么理由不赞成呢?

<script src="iscroll.js"></script>

                    <div id="wrapper">

                            <ul>

                                <li></li>

                                 ...

                          </ul>

                  </div>

        <script>

                   var myscroll=new iScroll("wrapper");

        </script>

 
        不过建议你使用一些框架的ready方法来安全调用iScroll(比如jquery里的ready())。iScroll里传递的参数

        iScroll里的第二个参数允许你自定义一些内容,比如下面的这段代码:

    <script>

                 var myscroll=new iScroll("wrapper",{hScrollbar:false, vScrollbar:false});

       </script>

 
       第二个参数通常都是一个对象,像上面的这个例子里就设定了不显示滚动条。常用的参数如下:

hScroll               false 禁止横向滚动 true横向滚动 默认为true

               vScroll               false 精致垂直滚动 true垂直滚动 默认为true

               hScrollbar         false隐藏水平方向上的滚动条

               vScrollbar         false 隐藏垂直方向上的滚动条

               fixedScrollbar  在iOS系统上,当元素拖动超出了scroller的边界时,滚动条会收缩,设置为true可以禁止滚动条超出

                                        scroller的可见区域。默认在Android上为true, iOS上为false

               fadeScrollbar  false 指定在无渐隐效果时隐藏滚动条

               hideScrollbar  在没有用户交互时隐藏滚动条 默认为true

               bounce            启用或禁用边界的反弹,默认为true

               momentum     启用或禁用惯性,默认为true,此参数在你想要保存资源的时候非常有用

               lockDirection  false取消拖动方向的锁定, true拖动只能在一个方向上(up/down 或者left/right)

 为了保持资源的完整性,建议去除滚动条拉动刷新(pull to refresh)

        自从Twitter和一些Apple的本地化应用出现了这个效果之后,这个效果就变得非常流行。你可以看看这儿先一睹为快。

       我最近把"pull to refresh"这个部分单分出来作为iScroll的一个额外插件。你可以点击这儿看看pull to refresh是如何工作滴。你只需要做的就是自定义pullDownAction()这个方法。你可能需要一个ajax来加载新的内容,不过一旦DOM 树发生了变化要记得调用refresh这个方法来。需要记住的是在例子中我们加了1秒的延迟来模拟网络的延迟效果。当然,如果你不想使用这个延迟,那就把 setTimeout方法去掉就行了。

 

缩放(pinch / zoom)

        我们不得不面对一个事实,那就是光有滚动其实没什么新意的。这就是为什么在iScroll 4这个版本里我们允许你可以放

        大和缩小。想要这个功能,只需要设置放大的参数zoom 为true即可实现利用手势来放大和缩小。你可以看看这儿。

        双击放大和缩小的功能在iScroll 4里也是得到支持的。要使用缩放功能,你至少需要如下配置:

                var myScroll =new iScroll("wrapper",{zoom:true});

       如果你想对缩放功能进行深度的自定义的话可以使用下面的一些选项:

               zoomMax   指定允许放大的最大倍数,默认为4

      【注意事项】:如果想要图片缩放的效果很好的话要把他们放到硬件的合成层中。通俗点说,就是在所有需要缩放的img元素上使用-webkit- transform:translate3d(0,0,0)来实现,而且尤为重要的是,硬件的加速会占用大量资源,要谨慎使用,否则你的应用可能就此崩 溃。

捕捉元素(snap and snap to element)

        捕捉的功能会促使scroller去重新定义位置,这样可以制作更加花哨的传送带效果。点击这里有个小例子。

        默认情况下,iScroll将scroller分成四分体,或者是相同大小的wrapper。iScroll 4加入了这个属性允许捕捉scroller里的任何元素,不考虑外部wrapper的大小。如果你想要实现这样的传送带效果,我建议你使用 “quadrant”分割。最佳的设置如下:

var myscroll=new iScroll("wrapper",{

                       snap:true,

                       momentum:false,

                       hScrollbar:false,

                       vScrollbar: false

                  });

 
          捕获元素,可以通过传递一个字符串来作为查询条件,如下:

var myscroll=new iScroll("wrapper",{

                      snap:"li",

                      momentum:false,

                      hScrollbar:false,

                      vScrollbar:false

                });

         在这个例子中scroller可以捕捉到滚动区域中最左上角的li元素

 

自定义滚动条(custom scrollbars)

          在iScroll 4这个版本中,可以利用一系列的css来自定义滚动条的呈现。可以给滚动条添加一个class参数,如下:

                  var myscroll=new iScroll("wrapper",{

                     scrollbarClass: "myScrollbar"

                 });

 

        你可以点击这里看一个小例子,在这个小例子里,myScrollbarH这个类被添加到了水平滚动条上,myScrollbarV这个类则被添加给了垂直 方向上的滚动条上了。需要提醒的是,滚动条是由两个元素组合而成的:容器和显示器。容器同wrapper的高度相同,而显示器则代表的是滚动条本身。

           滚动条的HTML结构如下:

<div class="myScrollbarV">

                          <div></div>

                  </div>

                 .myscrollbarV{

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

                  }

                .myScrollbarV > div {
                           position:absolute;
                           z-index:100;
                           width:100%;
                             /* The following is probably what you want to customize */
                           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);
                 }

 通用方法:

(1)refresh                          在DOM树发生变化时,应该调用此方法

     (2)scrollTo()                     滚动到某个位置

               eg: myscroll.scrollTo(0,10,200,true);

     (3)scrollToElement()      滚动到某个元素

               eg: myscroll.scrolToElement("li:nth-child(10)",100);

     (4)detroy()                       完全消除myscroll及其占用的内存空间

                eg: myscroll.destroy()

 

 

分享到:
评论

相关推荐

    iscroll.js下载 5.1.3最新版本

    **iscroll.js** 是一个高性能、轻量级的JavaScript滚动库,主要用于解决移动Web端的滚动问题,尤其在处理触摸事件和实现平滑滚动效果时表现出色。它为开发者提供了强大的API接口,使得在网页中实现复杂滚动效果变得...

    iscroll.js下载 5.2.0最新版本

    2. **高性能渲染**:iscroll.js 使用硬件加速来提升滚动的流畅性,尤其是在移动设备上,它可以充分利用GPU的计算能力,减少CPU的负载,提供更顺畅的用户体验。 3. **多平台支持**:iscroll.js 兼容多种浏览器和设备...

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

    5. **刷新功能**:在内容发生变化时,iscroll.js提供刷新方法,重新计算布局,保持滚动区域的正确显示。 ### III. 工作原理 iscroll.js通过监听浏览器的scroll事件,结合CSS3 translate3d进行内容的移动,从而实现...

    iscroll.js 用法demo

    **iscroll.js 用法详解** `iscroll.js` 是一个轻量级、高性能的JavaScript滚动库,由Matteo Spinelli开发。它主要用于解决移动Web应用中的滚动问题,提供了平滑的滚动效果,支持触摸事件,使得在手机或平板等触摸...

    jquery-iscroll.js鼠标控制ul左右滑动

    3. **初始化iScroll**:在jQuery的`$(document).ready()`函数中,使用`$("#scrollContainer").iscroll()`方法初始化iScroll。这将为`&lt;div id="scrollContainer"&gt;`设置滚动效果。 ```javascript $(document).ready...

    iScroll.js 用法方法参考_.docx

    iScroll.js 是一款轻量级的JavaScript库,主要用于解决移动端Web应用中滚动条的问题,尤其在iOS和Android设备上提供类似原生滚动的效果。iScroll 4是其一个重大更新的版本,它不仅修复和优化了之前的代码,还引入了...

    iscroll.zip

    在提供的"iscroll.zip"压缩包中,包含了iscroll.js的核心文件,以及一些示例代码,这些实例可以帮助开发者更好地理解和使用iscroll.js。通过对这些实例的分析和实践,我们可以学习如何在实际项目中集成iscroll.js,...

    学习使用jquery iScroll.js移动端滚动条插件

    在本知识点中,我们将详细探讨iScroll.js的使用方法、注意事项以及其实例化步骤和参数配置。 ### iScroll.js的由来与特点 iScroll.js的出现主要是为了解决移动版webkit浏览器(如iPhone和Android设备)中默认滚动条...

    iscroll4.js

    5. 在接收到服务器响应后,利用iscroll的API方法(如`refresh`或`scrollTo`)更新滚动状态。 在实际项目中,开发者可能还需要考虑性能优化,如延迟加载、按需加载等策略,以减少初始页面加载时间和内存占用。...

    基于iscroll.js实现下拉刷新和上拉加载效果

    在Web开发中,实现这两种效果可以通过多种方式,其中使用iscroll.js库是一个简便的解决方案。iscroll.js是一个非常流行的JavaScript滚动框架,主要用于创建流畅的滚动效果,同时也支持移动端的手势操作和特殊效果。 ...

    iScroll.zip

    iScroll 是一个高性能的JavaScript滚动库,主要用于解决前端开发中网页滚动流畅性的问题,尤其是在处理大量数据或元素时。在移动设备和触摸屏环境中,iScroll 提供了平滑的滚动体验,支持横向和纵向滚动,同时兼容...

    vue中利用iscroll.js解决pc端滚动问题

    值得注意的是,在使用iScroll.js时,应当参考其官方文档进行详细的参数配置和方法使用,这样才能根据项目需求做出最佳实践。官方文档地址和npm包地址应当被记录下来,以备后续查阅和解决问题。 最后,要在Vue项目中...

    iscroll4

    1. **引入库**:首先,在HTML文件中引入iscroll4的JavaScript文件,通常是`iscroll.js`或`iscroll.min.js`。 2. **初始化iscroll对象**:在JavaScript代码中,创建一个iscroll实例,指定滚动区域的DOM元素和配置...

    iscroll.js的上拉下拉刷新时无法回弹的解决方法

    在使用iscroll.js库实现上拉下拉刷新功能时,开发者常常遇到一个问题,即在iOS设备的浏览器上,用户在上拉或下拉刷新后,页面无法自然回弹到原始位置。这个问题使得用户体验受到影响,一些开发者甚至因此选择放弃...

    iscroll插件

    4. **实时刷新iscroll**:在数据加载完成后,使用`myScroll.refresh()`方法更新iscroll的状态。 iscroll作为一个强大的滚动解决方案,不仅简化了移动设备上滚动效果的实现,还为开发者提供了丰富的定制化选项和事件...

    mobile iscroll.rar

    通过这个示例,你可以深入理解iscroll的使用方法,并将其应用到自己的项目中。iscroll的灵活性和易用性使其成为开发移动Web应用时不可或缺的工具之一,帮助开发者创造出更加贴近用户习惯的滚动体验。

Global site tag (gtag.js) - Google Analytics