iScroll是高性能的、小尺寸的、无依赖关系的、支持多平台的滑动JavaScript库。 当然,不只是scroll,还有滚动、缩放、平移、无限滚动、视差滚动等。

  为了达到更好的新能,所以iScroll分为了很多版本,我们可以根据需要来使用,目前主要有下面的一些js库:

  • iscroll.js,它是通用脚本。它包括最常用的功能,并在占据很小的内存中提供非常高的性能。我们一般使用的都是这个
  • iscroll-lite.js,它是主要脚本的精简版本。它不支持snap,scrollbars,鼠标滚轮,键绑定。但是如果您需要的只是滚动(尤其是在移动设备上),iScroll lite是最小,最快的解决方案。
  • iscroll-probe.js探测当前的滚动位置是一项艰巨的任务,这就是为什么我决定为此建立专用版本。如果您需要知道任何给定时间的滚动位置,这是iScroll。(我正在做一些更多的测试,这可能会在正常的iscroll.js脚本中,所以请留意)。
  • iscroll-zoom.js添加缩放到标准滚动。
  • iscroll-infinite.js,可以做无限次和缓存的滚动。处理很长的元素列表对于移动设备来说是不容易的。iScroll无限使用缓存机制,可以滚动潜在的无限数量的元素。

  下面的连接是isroll常用的一些效果的demo,通过这些demo我们可以更好地学习与掌握。

  https://github.com/cubiq/iscroll/tree/master/demos

  

下载安装

  在github上clone该库,然后进入bulid文件夹中,我们就可以发现这些js文件了,目录结构如下所示:
     

  我们常用的一般是iscroll.js,这个文件不大,只有两千行,50多kb,在实际生产环境中我们使用压缩版本会更小。 也可以根据具体的需要选择使用。

  然后引入到项目文件中即可。

第一个例子

  iscroll是不限制一个页面中的滚动区域的数量的,但是对于每一个滚动区域,我们需要为它在外层添加一个.wrapper的类名(当然也可以是别的名称),如下所示:

<div id="wrapper">
<ul>
<li>...</li>
<li>...</li>
...
</ul>
</div>

  没错,就是这么简单,iscroll提倡简洁的DOM。在这个例子中,ul将会被滚动,且只有容器的第一个孩子节点被滚动,其他的孩子将会被忽略。

提示:box-shadowopacitytext-shadow和alpha通道是不利于性能的。滚动可能看起来不错,但是一旦你的DOM变得越来越复杂,性能表现将会变差。

 然后就是配置脚本了,最终的最基础的配置如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>scroll</title>
<script src="./build/iscroll.js"></script>
<script>
var myScroll;
function load() {
myScroll = new IScroll('.wrapper');
}
</script>
</head>
<body onload="load()">
<div class="wrapper">
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
</html>

需要在DOM准备就绪时启动iScroll。最安全的打算是在窗口onload事件上启动它DOMContentLoaded或内联初始化也很好,但请记住脚本需要知道滚动区域的高度/宽度。如果您的图像没有明确的宽度/高度声明,iScroll将很可能最终导致错误的滚动尺寸。

另外: 在初始化IScroll实例时,我们这里传入的类似于css选择器,它只会获得第一个元素,因为它调用的api是querySelector而不是querySelectorAll,所以如果页面中有多个滚动区域,需要遍历实现。 且我们还可以传入获得的元素,如new IScroll(document.getElementById("wrapper"));

配置IScroll

  我们可以通过传入第二个参数来配置iscroll,如下所示:

      myScroll = new IScroll('.wrapper', {
mouseWheel: true,
scrollbars: false
});

  即使滑动支持鼠标的滚动和显示scrolllbar。

iScroll使用各种技术根据设备/浏览器功能滚动,通常您不需要配置引擎,iScroll足够聪明,为您挑选最好的。尽管如此,重要的是了解iScroll工作的机制以及如何配置它们。

  • useTransform 默认为true, 即使用css的transform属性。
  • useTransition  默认为true, 即执行动画。
  • HWCompositing 默认为true, 此选项尝试通过附加translateZ(0)到转换CSS属性将卷轴放在硬件层上。这大大提高了性能,特别是在移动设备上。

基本功能

  • bounce:弹跳 默认为true,即滚轮遇到边界时,会执行一个弹跳动画,如果设置为false,那么表现会更平滑。
  • click:  点击 默认为false, iscroll必须阻止某些默认的浏览器行为。如果希望应用程序响应点击事件,则必须设置为true。
  • disableMouse 、 disablePointer、 disableTouch: 这些功能默认为false, 如果需要,可以设置为true。
  • freeScroll:默认为false。 通常对于2D的滚动,往往是左右滚动时,上下不可滚动;上下滚动时,左右不可滚动,如果设置为true,我们就可以随意滚动。
  • momentum: 默认为true, 当用户在屏幕上快速轻弹时,您可以打开/关闭动画动画。关闭这个大大提高了性能
  • mouseWheel: 默认为true,监听鼠标滚轮事件。
  • preventDefault: 默认为true,阻止默认事件。
  • scrollbars: 默认为false。
  • scrollX和scrollY: 默认垂直滚动,即前者为false,后者为true。
  • startX和startY: 默认滚动的起始位置为00。 也可以自行设置。
  • tap: 默认为false。即当用户点击到scrollbars时是否触发事件。
  • fadeScrollbars: 默认为false。 当不使用时,滚动条会消失。
  • interactiveScrollbars: 默认为false。 用户条变得可拖动,用户可以与之交互。
  • resizeScrollbars: 默认为true。 即我们可以自定义scrollbars的大小比例等。
  • shrinkScrollbars: 默认为false。 有效值为clip和scale'。clip'只需将指示器移动到其容器外部,印象就是滚动条缩小,但它只是简单地移出屏幕。如果您可以通过视觉效果生活,此选项将大大提高整体性能

对滚动条进行个性化设置: 首先设置scrollbars为custom。 然后就可以使用下面的类来设计了:

  • .iScrollHorizo​​ntalScrollbar,它应用于水平容器。实际托管滚动条指示器的元素。
  • .iScrollVerticalScrollbar,与上述相同,但用于垂直容器。
  • .iScrollIndicator,实际的滚动条指示器。
  • .iScrollBothScrollbars,当显示两个滚动条时,这将添加到容器元素中。通常只有一个(水平或垂直)是可见的。

更多请参考官方文档

结束

iscroll.js文档的更多相关文章

  1. gulpfile.js文档

    gulp watch 实现监听不仅需要package.json文档,还需要gulpfile.js文档.否则无法实现. 1.gulp的安装 1.1 首先必须先安装node.js.这个可以参考之前的博客& ...

  2. 使用node.js 文档里的方法写一个web服务器

    刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const h ...

  3. JS文档生成工具:JSDoc 介绍

    JSDoc是一个根据javascript文件中注释的信息,生成API文档的工具.生成的文档是html文件.类似JavaDoc和PHPDoc. 用法 /** 一坨注释之类的 */JSDoc会从/**开头 ...

  4. JS文档和Demo自动化生成工具 - SmartDoc发布

    曾几何时,当你码神附体,一路披荆斩棘的完成代码后,带着“一码在手,天下我有”的傲然环顾之时,却发现单元测试.API文档.Demo实例陆续向你砸来,顿时有木有一种冰水挑战后的感觉.而这时你应该:哟哟,快 ...

  5. 使用YUIDoc生成JS文档

    其实YUIDoc主页已经写的比较清晰了,但有一些概念和细节再点出一些注意的地方. 目前最新的YUIDoc使用nodejs进行开发安装和使用都非常的方便. 我们只需要将我们的代码加上必要的注释,便可以很 ...

  6. js文档系统-jsdoc-docdash

    一.参考文档 模版:https://github.com/clenemt/docdash 例子:http://clenemt.github.io/docdash/index.html jsdoc:ht ...

  7. Flv.js文档使用随记

    关键字:Flv.js | Flv js | Flv-js | HTML5 FLV Player | 0x001: 前言以下涉及到 flv.js 所有内容均是V1.5.0版本内的,如方法.属性.常量.监 ...

  8. tweenmax.js 文档

    TweenMax 参考http://bbs.9ria.com/thread-214959-1-1.html TweenMax 可能是很多人都用的,包括我 但 是最近发现大量的运用就总会产生这样或那样的 ...

  9. js文档视口高度函数

    objwin=window;objBody=document.body;objDel=document.documentElement;   关于弹窗时候用到 function getPageHeig ...

随机推荐

  1. JQuery UI Draggable插件使用说明文档

    JQuery UI Draggable插件用来使选中的元素可以通过鼠标拖动.Draggable的元素受css: ui-draggable影响, 拖动过程中的css: ui-draggable-drag ...

  2. sql 脚本创建索引

    之前从没有用SqlServer数据库处理过大数据量的表,都是用Oracle,然后一般为数据量较大的表添加索引或主键都是用plsql工具,今天正好需要为一张保存于SqlServer数据库的千万级数据表增 ...

  3. docker网络模式----入门docker的难点

    众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...

  4. Oauth Client Credentials Grant

    http://www.cnblogs.com/dudu/p/4569857.html OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft. ...

  5. SingleClass单例类

    前言 对于一个单例类,无论初始化单例对象多少次,在程序的整个生命周期内,只会创建一个类的实例对象,而且只要程序不被杀死,该实例对象就不会被释放,并且该对象是全局的,能够被整个系统访问到. 在应用这个模 ...

  6. PHP里public和private的区别

    public  公共的,谁都可以用 private 私有的,当前class可以随便用,外部不能调用

  7. Shell---自动测试局域网内的网络连通情况

    #!/bin/bash );do RE=`ping .$i` echo $RE >>result.log done

  8. 用ES6的class模仿Vue写一个双向绑定

    原文地址:用ES6的class模仿Vue写一个双向绑定 点击在线尝试一下 最终效果如下: 构造器(constructor) 构造一个TinyVue对象,包含基本的el,data,methods cla ...

  9. Spark大数据处理 之 从WordCount看Spark大数据处理的核心机制(2)

    在上一篇文章中,我们讲了Spark大数据处理的可扩展性和负载均衡,今天要讲的是更为重点的容错处理,这涉及到Spark的应用场景和RDD的设计来源. Spark的应用场景 Spark主要针对两种场景: ...

  10. 常用linux基础命令(持续更新...)

    删除 空目录 rmdir非空目录 rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 删除文件命令rm -f 文件名将会强行删除文件,且无提 ...