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 相关文章推荐
Javascript hasOwnProperty 方法 & in 关键字
Nov 26 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
Apr 29 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
js实现的类似于asp数据字典的数据类型代码实例
Sep 03 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
移动端JQ插件hammer使用详解
Jul 03 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
layui table设置前台过滤转义等方法
Aug 17 Javascript
vue实现五子棋游戏
May 28 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
Aug 04 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
轻松修复Discuz!数据库
2008/05/03 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
使用php实现截取指定长度
2013/08/06 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
超级强大的表单验证
2006/06/26 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JS常用函数使用指南
2014/11/23 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
在Python中关于中文编码问题的处理建议
2015/04/08 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
python矩阵的转置和逆转实例
2018/12/12 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
学习标兵获奖感言
2014/02/20 职场文书
聘用意向书范本
2014/04/01 职场文书
航空学院求职信
2014/06/11 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
职代会闭幕词
2015/01/28 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
详解MySQL集群搭建
2021/05/26 MySQL