vue2.0 better-scroll 实现移动端滑动的示例代码


Posted in Javascript onJanuary 25, 2018

写在前面的话:

上一篇文章实现了滑动效果,这部分来试试左右联动效果的实现方法吧

效果:滑动右侧时,左侧也能有相应的变化;点击左侧时,右侧也能自动定位到相应的位置。

如下图所示界面,左侧为分栏,右侧为分栏详情。

vue2.0 better-scroll 实现移动端滑动的示例代码

滑动右边使左边联动的大概的思路:

1)要知道右侧的列表中,每一个分栏所占的高度,存进一个数组中。

2)实现左边联动,则必须要监控 “scroll”事件,获取其高度

3)将scroll 的高度与右侧分栏的高度进行比较,获得其 index 值

4)左侧的分类中,使与 index 相应的分栏高亮即可~

余留的问题:额,左侧怎么跟着一起滚动?应该还需要判断一下当前左侧栏中的scroll的位置,然后使之跟随变化,但是不同尺寸的手机,高度不一,怎么解决???我不知道……

点击左边时,右边实现自动定位的大概思路:

1)首先要使点击有效,因为 better-scroll将默认事件都阻止了

2)为左侧的分栏绑定点击事件,并获取 index ,然后使右边的相应 index 分类滚动就行了~so easy ....but!!!

怎么下手?!!

1. 先实现滑动右边触发左边的功能:

做法:

(1)定义变量先~ 在data中加入一个 listHight: [] 数组;一个变量scrollY : 0,用来装目前的scroll的y位置坐标

(2)在methods 中定义一个函数计算高度,此处还要用到一个知识点(如何获取 分类列表dom元素?)还记得上一篇中使用到的this.$refs 吗?

我们先给要获取高度的那个元素取个类名,名字叫:“food-list-hook”:

let foodList =this.$refs.foodsWrapper.getElementsByClassName('food-list-hook') 这样就获取了所有分类列表啦,计算方法定义如下:

_calculateHeight () {
    // console.log(this)
    let foodList = this.$refs.foodsWrapper.getElementsByClassName('food-list-hook')
    let height = 0
    this.listHight.push(height)
    for (let i = 0; i < foodList.length; i++) {
     let item = foodList[i]
     height += item.clientHeight
     this.listHight.push(height)
    }
}

(3)然后在计算属性computed 中,来比较数组中的高度值与当前的 scroll 的y坐标值,返回的是当前所在高度的index值:

在执行这一步时,scrollY的值,要怎么得到?(通过better-scroll 检测“scroll”事件得到,此时,需要给其加上相应的参数,做法如截图中画红线处所示)

vue2.0 better-scroll 实现移动端滑动的示例代码

currentIndex () {
    for (let i = 0; i < this.listHight.length; i++) {
     let height1 = this.listHight[i]
     let height2 = this.listHight[i + 1]
     if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) {
      return i
     }
    }
    return 0
   }
 }

(4)在 template 中,将此index 值绑定到index 值相等的左侧的列表分栏中,并指定一个类名,叫 current,如下图中的 画红线的部分:

vue2.0 better-scroll 实现移动端滑动的示例代码 

(5)在style中,将相应的current 类加上相应的样式即可:

vue2.0 better-scroll 实现移动端滑动的示例代码

2. 再来实现点击左边,右边联动的效果

(1)使 左边栏 点击有效,如下图红线标注所示:

vue2.0 better-scroll 实现移动端滑动的示例代码

(2)为左侧栏 添加相应的点击事件:

vue2.0 better-scroll 实现移动端滑动的示例代码

(3)在methods 中编写点击触发的事件 selectMenu()方法,利用 获取的 $index 使右边进行相应的滚动,其中 300ms是加上了一个过渡效果:

vue2.0 better-scroll 实现移动端滑动的示例代码

试试吧~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript flash下fromCharCode和charCodeAt方法使用说明
Jan 12 Javascript
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
JS+CSS实现一个气泡提示框
Aug 18 Javascript
禁止拷贝网页内容的js代码
Jan 22 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 Javascript
完美实现仿QQ空间评论回复特效
May 06 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
jQuery实现选项卡切换效果简单演示
Dec 09 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
vant组件中 dialog的确认按钮的回调事件操作
Nov 04 Javascript
mui框架 页面无法滚动的解决方法(推荐)
Jan 25 #Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 #Javascript
Vue cli+mui 区域滚动的实例代码
Jan 25 #Javascript
基于vue开发的在线付费课程应用过程
Jan 25 #Javascript
基于vue 开发中出现警告问题去除方法
Jan 25 #Javascript
关于express与koa的使用对比详解
Jan 25 #Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 #Javascript
You might like
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
Python实现子类调用父类的方法
2014/11/10 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
Python的UTC时间转换讲解
2019/02/26 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
Python多分支if语句的使用
2020/09/03 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
几个SQL的面试题
2014/03/08 面试题
社区健康教育实施方案
2014/03/18 职场文书
总经理人事任命书
2014/06/05 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python