- 原生的js滚动在移动端上会发生卡顿,没有惯性和首尾弹簧功能,于是选择Better Scroll这个框架来适配移动端的滚动
- 优点:使用原生JS,不依赖任何框架,体积小
BScroll的安装
安装:npm install better-scroll --save
引用:
- vue项目:
import BScroll from 'better-scroll'
- js项目:直接下载bscroll.js文件然后引入就可以
使用
HTML部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <div class="content"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div>
|
JS部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| const bscroll = new BScroll(document.querySelector('.content'),{});
const bscroll = new BScroll(document.querySelector('.content'),{ probeType:2 });
const bscroll = new BScroll(document.querySelector('.content'),{ pullUpLoad: true }); bscroll.on('pullingUp',() => { console.log('发生上拉加载动作,发送网络请求的代码可以写在这里'); setTimeout(() => { bscroll.finishPullUp() },2000) })
|
点击回到顶部
对new出来的BScroll对象使用scrollTo方法
bscroll.scrollTo(0,0,500)
500毫秒回到顶部
缺点
当滚动内容里面有图片时会偶尔出现bug,可能在 BS计算滚动内容的高度的时候图片还没加载过来,这时会导致记得算出来的高度比实际的高度低出现滚动问题
解决办法:图片的@load
监听图片加载完成再对BS进行refresh