tips 前端 移动端 web iscroll 5 自译文档 api速查
iscroll 可以做的
1,模拟原生的ios 或者android等设备的元素滚动,app里的那种顺滑的滚动,仅仅使用一个轻量的js库实现(甚至更酷炫的视觉感受)
2,手机端流行的下拉刷新,ajax异步加载 无限滚动 视差滚动等
3.同时可以做水平方向上的轮播,手势滑动,借由捕捉dom元素分页显示
...
初始化 initialize 初始化要滚动内容的可视区域容器 推荐使用尽可能简单的dom结构,
即
<div id="wrapper">
<div class="the_container 这里是手指滑动的内容区域的容器" >...</div>
<div class="the_container2 此div 和它的内容将会被IScorll忽略"></div>
</div>
<script type="text/javascript">
var myScroll = new IScroll('#wrapper');
</script>
note:
初始化脚本只会关心wrapper下的第一个子元素,将它视为可滚动的元素
但是一个页面wrapper元素本身可以有多个 比如使用 #wrapper #wrapper2 .wrapper选择器初始化容器,支持这样的多个滚动区域
iscroll的相关配置参数可以在初始化方法中通过第二个对象参数传递
如:
var myScroll = new IScroll('#wrapper', {
mouseWheel: true,
scrollbars: true
});
初始化之后可以也可以使用它的实例的options 对象设置
如:
myScroll.options.xxx
Iscroll相关方法:
滚动到任意位置 scrollTo(x, y, time, easing)
如:
myScroll.scrollTo(0, -100); //向下滚100像素
note:
easing 动画效果(可选项)使用Scroll.utils.ease对象下定义的效果( quadratic, circular, back, bounce, elastic(弹性滚动))
time 耗费时间(可选项)
如:
myScroll.scrollTo(0, -100, 1000, IScroll.utils.ease.elastic);
scrollBy(x, y, time, easing) 这个方法和上面的基本相同,不过x,y是相对定位的(relative;)
滚动到指定的某元素位置那儿
scrollToElement(el, time, offsetX, offsetY, easing)
如:
myScroll.scrollToElement(document.querySelector('#scroller li:nth-child(10)'))" //滚动到第10个元素(第10个元素在wrapper顶部) myScroll.scrollToElement(document.querySelector('#scroller li:nth-child(25)'), null, null, true); //滚动第25个元素 (第二个元素在wrapper中部) myScroll.scrollToElement(document.querySelector('#scroller li:nth-child(50)'), 1200, null, null, IScroll.utils.ease.elastic) //滚动到第50个元素
分隔滚动内容区域(捕捉元素)(iscroll的一大特色,亮点功能)
options.snap 可选项 snap: true snap:'li'
如:
var myScroll = new IScroll('#wrapper', {
snap: 'li'
});
note:
捕捉到元素之后就有一系列有趣的方法可用
goToPage(x, y, time, easing) x y是对于水平和垂直的轴来定义的
如:
myScroll.goToPage(10, 0, 1000); 在一秒内在水平方向上翻动10页
next()
prev() //基于当前位置翻页
记得应该引入iscroll-zoom.js (缩放)
options.zoom (默认 false) 设置为true
options.zoomMax (默认 4)
options.zoomMin (默认 1)
options.zoomStart (默认 1)
options.wheelAction (默认 undenfined) 可设置为zoom 代替默认的滚动功能而改为缩放
zoom(scale, x, y, time) x y定义滚动的基于的中心,不设置将会基于屏幕中心 time执行的毫秒
刷新 refresh()
ajax的回调处理函数里设置一下延时(因为加入新的dom元素后iscroll需要一点重新计算然后让页面渲染的时间)
还有一些情况也需要iscroll来重新计算,比如结合bootstrap的tab页插件时,每个标签页一个iscroll实例,这时需要在dom渲染完成后
setTimeout(function () {myScroll.refresh();}, 0); (官方的意见是这种等待时间即便是加个0也比不加强多了)
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
iscroll_vertical_flowers.refresh();
});
销毁destroy()
myScroll.destroy();
myScroll = null; //使用这两行代码释放iscroller占用的内存,当不再使用时
可用事件:
beforeScrollStart
scrollCancel
scrollStart
scroll note: 滚动中的事件监听 只有Iscroll 5的probe.js版本才支持
scrollEnd
flick
zoomStart
zoomEnd
注册事件( on(type, fn) )如:
myScroll = new IScroll('#wrapper');
myScroll.on('scrollEnd', function(){});
可用属性:
myScroll.x/y 当前位置
myScroll.directionX/Y 上一次的滚动方向(-1 下/右, 0 保持原状, 1 上/左)
myScroll.currentPage 当前Snap信息
myScroll.maxScrollXmyScroll.maxScrollY 当滚动到底部时的 myScroll.x/y
iscroll 使用的核心技术:
css3的 transform(2d,3d转换) transform有四个常用方法:旋转rotate()、缩放scale()、移动translate()、 倾斜skew()
note:
iscroll 启用/禁用transform 通过 options.useTransform
(默认为true,若设为false,官方文档称你会感觉你一下回到了2007年,因为那时候css没有transform技术)
由于在ie上会使用top left,作兼容处理方案 此时scroller(wrapper的第一个子元素,所有滚动的内容区域的容器)需要设置为position:absolute;
css3的 transition(过渡) 一段时间内元素从某样式变为某样式
iscroll使用 transition技术执行csss3的animation(动画)
主要是两种预先定义的动画 momentum(拖动惯性) 和 bounce(超过反弹)
options.useTransition (默认为true)
设置为false,用来代替的 requestAnimationFrame 会被执行
options.HWCompositing
使用硬件加速 (默认为true,如果需要更侧重稳定性可以关掉,可减低手机上xxx意外停止的机率)
options.bounce (默认为true)
单独设置false可禁用超过反弹
options.click (默认为false)
iscorll默认禁用了滚动区域的一些默认行为 比如点击事件
如果你希望你的脚本响应滚动区域内的点击事件 可设置为true开启响应点击事件
官方推荐手机端不要使用点击事件而使用触摸行为的tap事件代替,因为执行效率要高很多
options.disableMouse
options.disablePointer
options.disableTouch (默认 false)
note:
iscroll默认会同时监听 鼠标 指针 手指触摸事件,以兼容pc tablet mobile, 但是他们同时觉得这种做法有些浪费内存占用,
所以它建议如果你用时如果有明确的针对设备时,禁用掉不必要的监听以提高效率吧
options.eventPassthrough (默认 false)
有时你既要用到垂直滚动又要用到水平方向的滚动,将此值设为true
或设置为 'horizontal'将替换(iscroll的垂直滚动或原生的水平滚动)
options.freeScroll (默认 false)
这个选项主要在2d的滚动时很好用 当你的滚动区域既要水平方向和垂直滚动时,
不过效果感觉并不好,就像用地图应用的那种随便拖动的感觉
options.keyBindings (默认false)
激活键盘接收
options.invertWheelDirection (默认false)
反转鼠标方向,前提是支持mouse wheel
options.momentum (默认 true)
设置 是否启用拖动惯性
options.mouseWheel (默认 false)
是否监听鼠标事件
options.preventDefault (默认 true)
官方警告你除非你真的理解你在做什么否则不要瞎设
options.scrollbars (默认 false)
展示或者不展示滚动条
options.scrollX (默认 false)
options.scrollY (默认 ture)
默认只有垂直滚动,如果你需要水平方向上的滚动你需要设置scrollX为true
使用时可按需要开一个关一个
options.startX options.startY (默认 0)
默认scroller(内容区域)在 wrapper的左上角(0,0)位置 你可以设置此初始位置
options.tap (默认false)
设置这个选项可以在用户点击了触发了tap事件却没有滚动时 iscroll仍然能够监听到
标准的增加监听事件的代码为
element.addEventListener('tap', doSomething, false); \\原生js(Native)
$('#element').on('tap', doSomething); \\ (jquery语法)
options.fadeScrollbars (默认 false)
设置为true时 启用渐隐式的滚动条(滚动条会在不滚动时自动隐藏)
options.interactiveScrollbars(默认 false)
可拖拽的的滚动条
options.resizeScrollbars (默认 true)
滚动条的尺寸的基于wrap的宽度/scroller的高度
options.shrinkScrollbars (默认 false)
可设的值 'clip' 'scale'
设置后当滚动区域超出是滚动条变短一点点
options.bindToWrapper (默认 false)
默认当你手指离开滚动内容区域后 滚动手指仍然会进行内容滚动,这通常来说很好用 不过你也可以把鼠标或者手指的监听不绑定到document上
而仅仅绑定到wrapper上,这样离开滚动区域将不会再滚动
options.bounceEasing (默认 circular)
note:
可设置(超出反弹的动画) 'quadratic', 'circular', 'back', 'bounce', 'elastic'
如果你不想要上面的几种效果,同时也支持以下面这种方式定制个人动画
bounceEasing: {
style: 'cubic-bezier(0,0,1,1)',
fn: function (k) { return k; }
}
options.bounceTime (默认 600)
反弹动画的执行时间 (以毫秒为单位)
options.deceleration (默认 0.0006)
拖动惯性的减速选项 数值越大执行时间越短 如果你要改变推荐的选择是0.01,
比这个数值再大一点基本上就感觉不到有拖动惯性的减速运动了
options.mouseWheelSpeed (默认 20)
设置鼠标滚轮的速度 (这个不好描述,具体要设置多快自己去改数值试试就知道了)
options.preventDefaultException (默认 { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ })
如果你不想在所有元素上禁止浏览器默认会发生的操作 比如点a标签的跳转 页面的移动
可这样设置: preventDefaultException: { className: /(^|\s)formfield(\s|$)/ }
options.resizePolling (默认 60)
当你改变浏览器窗口大小后(比如pc浏览器鼠标拖动了窗口大小),iscroll 需要重新计算位置和尺寸
进行这种一旦改变后重新计算的轮询 间隔为60毫秒
tips 前端 移动端 web iscroll 5 自译文档 api速查的更多相关文章
- 手机移动端web前端常见问题整理
移动端常见问题及解决方案 一.meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="w ...
- 移动端 Web 开发前端知识整理
文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...
- web前端-《手机移动端WEB资源整合》——meta标签篇
前端网页meta元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词.meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言,自动刷新并指向 ...
- web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址
web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址 Huang Jie Blog .Com-前端开发 http://www.huangjieblog.com/?feed=rs ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 【超级干货】手机移动端WEB资源整合
meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...
- 手机移动端WEB资源整合
meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...
- 【超级干货】手机移动端WEB资源整合:转载
转载于:http://www.w3cfuns.com/notes/24611/fbba9cbd616e795360ea45515494aa53.html meta基础知识 H5页面窗口自动调整到设备宽 ...
随机推荐
- ethereum(以太坊)(十一)--字节数组(一)
pragma solidity ^0.4.0; contract byte1{ /* 固定大小字节数组(Fixed-size byte arrays) 固定大小字节数组可以通过bytes1,bytes ...
- 【Effective c++ 读书笔记】条款01 视 C++ 为一个语言联邦
一开始,C++只是 C 加上一些面向对象的特性.C++最初的名称 C with Classes 也反映了这个血缘关系. 但是,现在,当这个语言逐渐成熟,它变得更活跃更无拘束,更大胆冒险,开始接受不同于 ...
- MySQL数据库 : 自关联,视图,事物,索引
自关联查询(自身id关联自身id(主键),查询的时候可以逻辑分为两个表,然后分别起一个别名来区分) select * from areas as cityinner join areas as pro ...
- 将Mnist手写数字库转化为图片形式 和标签形式
Mnist 数据文件有两种,一种是图片文件,一种是标签文件,那么如何把他们解析出来呢? (1)解析图片文件 可以看出在train-images.idx3-ubyte中,第一个数为32位的整数(魔数,图 ...
- redhat 配置本地yum源
redhat配置3个源就够了: 1.本地yum源,就是你本地的ISO 2.配置163源 3.配置epel源 环境:redhat7 + vmw 12 pro 1.配置本地yum源 要配置本地源,需要先把 ...
- 关于SSM框架项目中jsp页面EL表达式使用的一些疑问(一)
问题 ssm框架整合中,jsp页面中EL表达式所引用的对象“page”可以在controller中使用mav.addObject(“page”,pag )进行添加,如果省略mav.addObject( ...
- 如何使用Python脚本
来自官方文档 一.写 python 脚本: import sys import datetime for line in sys.stdin: line = line.strip() userid, ...
- Python locale 多语言模块和我遇到的坑
Table of Contents 1. locale遇到的问题 1.1. locale 简介 1.1.1. 什么是locale 1.1.2. locale 相关命令 1.2. Python loca ...
- Jenkins拾遗--第二篇(初步配置Jenkins)
插件配置 第一次安装Jenkins的时候会让你配置插件.这里有一个建议:就是把所有插件都看一遍,如果用不到,就不要勾选.Jenkins插件兼容性有的时候不是很好,多装多出事儿,保持最小集就好.浏览一遍 ...
- MD5--3D模型
在学习Away3D的过程中,接触到MD5模型和MD5动画这样两个词.之前对MD5的认识就是一种加密技术,怎么它又和动画扯上关系了呢. 一阵谷歌之后,终于在这个地方发现了关于3D方面的MD5介绍了:ht ...