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 OFFICE控件测试代码
Dec 08 Javascript
jquery中文乱码的多种解决方法
Jun 21 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
Dec 26 Javascript
JS的get和set使用示例
Feb 20 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
Aug 13 Javascript
JS多个异步请求 按顺序执行next实现解析
Sep 16 Javascript
Vue全局事件总线你了解吗
Feb 24 Vue.js
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中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
python类定义的讲解
2013/11/01 Python
Python抓取京东图书评论数据
2014/08/31 Python
Python 26进制计算实现方法
2015/05/28 Python
python中模块查找的原理与方法详解
2017/08/11 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
Python中的函数作用域
2018/05/07 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
适用于所有创业者的创业计划书
2014/02/05 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
行政撤诉申请书
2015/05/18 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
小学班长竞选稿
2015/11/20 职场文书
《灰雀》教学反思
2016/02/19 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
css3实现的加载动画效果
2021/04/07 HTML / CSS