vue中使用better-scroll实现滑动效果及注意事项


Posted in Javascript onNovember 15, 2018

一、首先需要在项目中引入better-scroll

1. 在package.json 直接写入 "better-scroll":"^1.11.1"  版本以github上为准(目前最新)

2.cpnm install  在node_modules  可以查看版本是否安装

3.直接在你的组件里面写入import BScroll from 'better-scroll';

二、better-scroll优点

1.体验像原生:滚动非常流畅,而且没有滚动条。

2.滚动位置固定:在vue中通过路由切换页面时组件会自动滚动到顶部,需要监听滚动行为才能让滚动位置固定,better-scroll解决了这个问题。

三、下面是在项目中的使用

先给大家介绍最终要实现的效果

        就是移动端很常见的效果,当滑动右边部分的时候,左边会联动显示与当前内容相符合的标题高亮,当点击左边某一个标题的时候,右边会自动滑动到相应的内容。

vue中使用better-scroll实现滑动效果及注意事项

实现及说明

1.滚动效果

better-scroll在使用的时候需要在dom元素渲染完成之后初始化better-scroll的实例,初始化的时候,先要获取需要滑动的元素,然后在初始化的时候将获取到的元素传递给初始化函数,此时便可实现滑动效果

2.左右联动效果

左右联动效果的实现,是better-scroll通过监听事件实现的。

首先获取到右边内容盒子的高度,然后获取到该盒子中每一项的高度并做前n项高度累加(第n项的高度是前n项的高度和)存储到listHeight数组中。在初始化的时候传递属性probeType=3 (探针的效果,时时获取滚动高度),并给右边的内容盒子对象监听scroll事件,从而时时获取Y轴位置,来与listHeight数组中的数据做比较,时时计算当前的索引值,并给对边对应索引值的项添加背景色高亮,从而实现右边滑动,联动左边。

当点击左边的每一项的时候,获取到当前的索引值,并根据当前的索引值获取到与右边内容盒子中对应索引的元素,右边的盒子元素通过监听scrollToElement,并传递获取到的对应索引元素和动画时间,从而实现点击左边,实现右边联动;

实现代码如下:

html结构

vue中使用better-scroll实现滑动效果及注意事项

demo中用到的数据结构

vue中使用better-scroll实现滑动效果及注意事项

demo中用到的方法

vue中使用better-scroll实现滑动效果及注意事项

方法的调用

vue中使用better-scroll实现滑动效果及注意事项

属性计算

vue中使用better-scroll实现滑动效果及注意事项

样式不做过多介绍

需要注意的是,该页面的这一部分给了固定的高度,且超出部分overflow:hidden;

vue中使用better-scroll实现滑动效果及注意事项

3.better-scroll实现水平滑动效果

项目中经常会遇到需要水平滑动的需求,现在就用better-scroll来实现它

better-scroll的使用方式跟上边的说明是一样,只是配置项发生了变化,下面将代码贴出来,就明了了。

template部分

vue中使用better-scroll实现滑动效果及注意事项

js部分

vue中使用better-scroll实现滑动效果及注意事项

css部分

vue中使用better-scroll实现滑动效果及注意事项

注意事项:

1.tab_content是内容的盒子,他的长度就是内容的宽度;

2.由于内容的盒子是需要滑动的,所以在内容盒子的外边还需要在加一层盒子,宽度为100%。

better-scroll插件git地址https://github.com/ustbhuangyi/better-scroll

总结

以上所述是小编给大家介绍的vue中使用better-scroll实现滑动效果及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
Oct 07 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
vue父组件向子组件动态传值的两种方法
Nov 11 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
Sep 13 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
May 07 Javascript
Vue混入mixins滚动触底的方法
Nov 22 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
layDate日期控件使用方法详解
Nov 15 #Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 #Javascript
Vue一个案例引发的递归组件的使用详解
Nov 15 #Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
Nov 15 #Javascript
Angular事件之不同组件间传递数据的方法
Nov 15 #Javascript
vue 移动端适配方案详解
Nov 15 #Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
Nov 15 #Javascript
You might like
php cookies中删除的一般赋值方法
2011/05/07 PHP
php实现监听事件
2013/11/06 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
Python自动发邮件脚本
2017/03/31 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
python反编译学习之字节码详解
2019/05/19 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python函数调用追踪实现代码
2020/11/27 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
Java面向对象面试题
2016/12/26 面试题
产品质量保证书范本
2015/02/27 职场文书
nginx优化的六点方法
2021/03/31 Servers
OpenCV-Python实现轮廓拟合
2021/06/08 Python