vue滚动轴插件better-scroll使用详解
跟做慕课网的vue高仿外卖项目中用到了一个很好用的插件BScroll,用来计算左侧menu栏对应右侧foods栏相应显示的食物区,如果不用插件就比较费事了,因此这里分享一下这个插件的简单使用:
一、项目中下载,并引入
在配置文件package.json中引入版本
"dependencies":{
"better-scroll":"^0.1.7"
}
然后进入项目目录,打开cmd更新配置
npmi(i是install缩写)
最后引入,比如我在项目goods组件中使用则:
importBScrollfrom'better-scroll';
二、举个栗子
需求是处于当前比如热销榜栏目,则菜单栏高亮。滚动到下一栏高亮栏目则下一栏菜单高亮。点击菜单中某一栏菜单该栏目高亮并且跳转到对应食物区。
下面是foods组件中的代码
template:
//菜单栏
0"class="icon":class="classMap[item.type]">{{item.name}}
//食物栏
script
importVuefrom'vue';
importBScrollfrom'better-scroll';
importshopcartfrom'@/components/shopcart/shopcart';
exportdefault{
props:{//接收父组件传的数据
seller:{
type:Object
}
},
data(){
return{
goods:[],
listHeight:[],//菜单中一个菜单栏目的高度
scrollY:0//定义的Y滚动轴及初始值
};
},
computed:{//计算属性
currentIndex(){//当前菜单栏在整个菜单中的下标index
for(leti=0;i=height1&&this.scrollY{
this.goods=res.data.data;
this.$nextTick(()=>{//
this._initScroll();
this._calculateHeight();
});
});
this.classMap=['decrease','discount','special','invoice','guarantee'];
},
methods:{
selectMenu(index,event){
if(!event._constructed){
return;
}
letfoodList=this.$refs.foodsWrap.getElementsByClassName('food-list-hook');
letel=foodList[index];
this.foodsScroll.scrollToElement(el,300);
},
_initScroll(){
this.menuScroll=newBScroll(this.$refs.menuWrap,{
click:true
});
this.foodsScroll=newBScroll(this.$refs.foodsWrap,{probeType:3
});
this.foodsScroll.on('scroll',(pos)=>{
this.scrollY=Math.abs(Math.round(pos.y));
console.log(this.scrollY);
});
},
_calculateHeight(){
letfoodList=this.$refs.foodsWrap.getElementsByClassName('food-list-hook');
letheight=0;
this.listHeight.push(height);
for(leti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。