怎么在vue2.0中使用better-scroll实现一个移动端滑动?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>滑动右边使左边联动的大概的思路:强>
1)要知道右侧的列表中,每一个分栏所占的高度,存进一个数组中。
2)实现左边联动,则必须要监控“滚动”事件,获取其高度
3)将滚动的高度与右侧分栏的高度进行比较,获得其索引值
4)左侧的分类中,使与指数相应的分栏高亮即可~
余留的问题:额,左侧怎么跟着一起滚动?应该还需要判断一下当前左侧栏中的滚动的位置,然后使之跟随变化,但是不同尺寸的手机,高度不一,怎么解决? ? ?我不知道……
<强>点击左边时,右边实现自动定位的大概思路:强>
1)首先要使点击有效,因为better-scroll将默认事件都阻止了
2)为左侧的分栏绑定点击事件,并获取指数,然后使右边的相应指数分类滚动就行了~所以容易....但! ! !
怎么下手? ! !
<强> 1。先实现滑动右边触发左边的功能:强>
做法:
(1)定义变量先~在数据中加入一个listHight:[]数组;一个变量scrollY: 0,用来装目前的滚动的y位置坐标
(2)在方法中定义一个函数计算高度,此处还要用到一个知识点(如何获取分类列表dom元素?)还记得上一篇中使用到的。参美元吗?
我们先给要获取高度的那个元素取个类名,名字叫:“food-list-hook”:
让foodList=这个。美元refs.foodsWrapper.getElementsByClassName (& # 39; food-list-hook& # 39;)这样就获取了所有分类列表啦,计算方法定义如下:
_calculateHeight (), { ,,,//,console.log(这) ,,,let foodList =,这。美元refs.foodsWrapper.getElementsByClassName (& # 39; food-list-hook& # 39;) ,,,let height =0 ,,,this.listHight.push(高度) ,,,for (let 小姐:=,0;,小姐:& lt;, foodList.length;,我+ +),{ ,,,,let item =, foodList[我] ,,,,height +=item.clientHeight ,,,,this.listHight.push(高度) ,,,} }
(3)然后在计算属性计算中,来比较数组中的高度值与当前的滚动的y坐标值,返回的是当前所在高度的索引值:
在执行这一步时,scrollY的值,要怎么得到?(通过better-scroll检测“滚动”事件得到,此时,需要给其加上相应的参数,做法如截图中画红线处所示)
currentIndex (), { ,,,for (let 小姐:=,0;,小姐:& lt;, this.listHight.length;,我+ +),{ ,,,,let height1 =, this.listHight[我] ,,,,let height2 =, this.listHight(小姐:+,- 1) ,,,,if (! height2 | |, (this.scrollY 祝辞=,height1 ,,, this.scrollY & lt;, height2)), { ,,,,return 我 ,,,,} ,,,} ,,return 0 ,,} 以前,}>(4)在模板中,将此索引值绑定到索引值相等的左侧的列表分栏中,并指定一个类名,叫电流,如下图中的画红线的部分:
(5)在风格中,将相应的当前类加上相应的样式即可:
<强> 2。再来实现点击左边,右边联动的效果强>
(1)使左边栏点击有效,如下图红线标注所示:
(2)为左侧栏添加相应的点击事件:
(3)在方法中编写点击触发的事件selectMenu()方法,利用获取的美元指数使右边进行相应的滚动,其中300 ms是加上了一个过渡效果:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
怎么在vue2.0中使用better-scroll实现一个移动端滑动