iScroll 是一个js 多平台滚动库,https://github.com/cubiq/iscroll
这几天用下来发现这个库确实强大,github的star数也已经到达10000多。在vue中使用iScroll 和平常使用大同小异,核心思路都一样。
使用时需要注意几个问题:
- iScroll 需要在DOM加载完毕过后在进行初始化
- DOM 更新过后要执行refresh
- 如果需要监听scroll事件,需要使用iscroll-probe.js版本
- iScroll 只会对第一个子节点实现滚动, 其余的子节点会自动忽略
- iScroll 初始化指定的节点最好有
position:relative; height: 100%
- 初始化指定的节点可以加上
transform: translate3d(0,0,0)
,以此开启硬件加速 - vue 组件中初始化iScroll一定要在mounted钩子函数中,并且使用
this.$nextTick()
回调,也可以用setTimeout延迟执iScroll的初始化
可以自己通过iScroll实现一个vue组件,可以命名为Scroll;在Scroll 的 template中使用slot插槽, 可以很方便的自行决定Scroll 下面的DOM结构