什么是 better-scroll
better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里 。better-scroll 也很强大,不仅可以做普通的滚动列表,还可以做轮播图、picker 等等。
<template> <div> <div class="goods"> <div class="menu-wrapper" ref="menuWrapper"> </div> <div class="food-wrapper" ref="foodWrapper"> </div> </div> </div> </template>
与1.0版本不同的是,我们使用的是ref
<script type="text/ecmascript-6"> import BScroll from "better-scroll"; export default { data(){ return { currentIndex:1, goods:[] } }, created(){ this.classMap=['decrease','discount','special','invoice','guarantee']; this.$http.get('/api/goods').then((response)=>{ response=response.body; if (response.errno===ERR_OK) { this.goods=response.data; } //dom结构加载结束(nextTick这个接口是计算dom相关的,要确保原生dom已经渲染了) this.$nextTick(()=>{ this._initScroll(); }); }); }, methods:{ _initScroll(){ // 使用better-scroll实现的关键代码 this.menuScroll=new BScroll(this.$refs.menuWrapper,{click:true}); this.foodScroll=new BScroll(this.$refs.foodWrapper,{click:true}); } } }; </script>
很简单这样页面就可以滚动了,如下图
但是,这样左右两个页面并没有联动起来,需要我们再定义一个方法来计算滚动的高度,以及在计算属性中计算左侧当前索引在哪里
从而定义左侧边栏的位置
computed:{ //用来计算左侧当前索引在哪,从而定位到左侧边栏的位置 currentIndex(){ for (let i = 0; i < this.listHeight.length; i++) { var height1=this.listHeight[i] ; var height2=this.listHeight[i+1]; if(!height2||(this.scrollY >= height1 && this.scrollY < height2)){ return i; } } return 0; } }, methods:{ _initScroll(){ // 使用better-scroll实现的关键代码 this.menuScroll=new BScroll(this.$refs.menuWrapper,{click:true}); this.foodScroll=new BScroll(this.$refs.foodWrapper,{ click: true, //探针作用,实时监测滚动位置 probeType: 3 }); this.foodScroll.on('scroll',(pos)=>{ this.scrollY=Math.abs(Math.round(pos.y)) }); }, _calculateHeight(){ let foodList=this.$refs.foodWrapper.getElementsByClassName('food-list-hook'); let height=0; this.listHeight.push(height); for (var i = 0; i < foodList.length; i++) { let item=foodList[i]; height+=item.clientHeight; this.listHeight.push(height); } } } //dom结构加载结束(nextTick这个接口是计算dom相关的,要确保原生dom已经渲染了) this.$nextTick(()=>{ this._initScroll(); this._calculateHeight(); });
在dom渲染后,也是需要计算高度的.
滑动右边,实现左边联动已经实现了,接下来就是,点击左边的菜单,右边的食物相应滚动到具体的位置
给左边菜单绑定一个事件:@click="selectMenu(index,$event)"
/左边的菜单项的点击事件 selectMenu(index,event){ //自己默认派发事件时(BScroll),_constructed默认为true.但原生的浏览器并没有这个属性 if (!event._constructed) { return; } //运用BScroll滚动到相应位置 //运用index去找到对应的右侧位置 let foodList=this.$refs.foodWrapper.getElementsByClassName('food-list-hook'); //滚动到相应的位置 let el=foodList[index]; //设置滚动时间 this.foodScroll.scrollToElement(el,2000); }
至此,整个联动实现的,完整代码如下
<template> <div> <div class="goods"> <div class="menu-wrapper" ref="menuWrapper"> <ul> <li v-for="(item,index) in goods" class="menu-item" :class="{'current':currentIndex===index}" @click="selectMenu(index,$event)"> <span class="text border-1px"> <span v-show="item.type>0" class="icon" :class="classMap[item.type]"></span>{{item.name}} </span> </li> </ul> </div> <div class="food-wrapper" ref="foodWrapper"> <ul> <li v-for="(item,index) in goods" class="food-list food-list-hook"> <h1 class="title">{{item.name}}</h1> <ul> <li v-for="food in item.foods" class="food-item border-1px"> <div class="icon"> <img :src="/UploadFiles/2021-04-02/food.icon">
总结
以上所述是小编给大家介绍的vue.js2.0 实现better-scroll的滚动效果实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】