better-scroll是D8黄轶老师基于iscroll重写的一个插件,在vue中使用这个插件能给App带来流畅性,提高了用户体验。
一、安装
运行npm install better-scroll --save
二、html结构
在这里,分成4层结构。最外层一定要设置宽度以及定位,外层高度要100%,只能滚动第一个li,因此我们把元素全放到li标签里即可。子元素可以有多个同级,但是子元素高度一定要大于父元素,这个是产生滚动的必要条件。
三、初始化
首先要引入组件,需要dom结构加载完成时才执行初始化($nextTick)。因此,需要用上钩子函数created()或者mounted()。
<divclass="wrapper"ref="wrapper">
<divclass="content">
<ul>
<li></li>
</ul>
</div>
</div>
importBScroll from'better-scroll'
mounted(){
this.$nextTick(()=>{
if(!this.scroll){
this.scroll=newBScroll(this.$refs.wrapper,{click:true})}
else if(!this.$refs.wrapper){return}
else{this.scroll.refresh()}
})
}
四、优点
1.体验像原生:滚动非常流畅,而且没有滚动条。
2.记录当前路由滚动位置:在vue中通过路由切换页面时组件会自动滚动到顶部,需要监听滚动行为才能让滚动位置固定,better-scroll解决了这个问题。