better-scroll在vue项目中的使用
1、准备工作
在项目中安装better-scroll:
npm install --save better-scroll
组件中引入插件
import BScroll from "better-scroll"
2、开始使用插件
dom结构
<div class="bscroll" ref="bscroll">
<div class="bscroll-container"></div>
</div>
注:dom结构规定这样,滑动区域的内容放在bscroll-container中,否则,则可能不会成功
部分css
.bscroll{
width: 100%;
height: 5vH;
overflow: hidden;
}
注:父级bscroll必须有高度,并且overflow为hidden;
插件使用
mounted(){
this.$nextTick(() => {
let bscrollDom = this.$refs.bscroll;
this.aBScroll = new BScroll(bscrollDom,{})
})
}
注:
1、插件初始化时需要具体元素,所以再DOM结构中使用ref标记元素,以备插件使用;
2、建议放在nextTick方法里面,避免DOM结构未渲染完成从而造成子元素bscroll-container高度计算不准确;
3、建议使用this.bscroll方式定义,以备在其他方法中使用;
按照以上步骤,便可以简单的使用better-scroll插件了,效果如下图
3、better-scroll常用参数含义
startX: 0 (默认值:0) 表示X轴滚动的起始值
startY: 0 (默认值:0) 表示Y轴滚动的起始值
scrollY: false (默认值:false) 表示延Y轴滚动
scrollX: true (默认值:true) 表示延X轴滚动
freeScroll: false (默认值:false) 自由方向滚动
scrollbar: false (默认值:false) 滚动条
> 注: 当开启滚动条时,建议直接父级元素position设为 relative;因为滚动条为绝对定位,
为避免滚动条相对其祖辈元素定位而出现滚动条不符合预期效果的现象 click: false (默认值:false) 是否派发点击事件;
> 注:若设置为true仍然无法触发click事件,可以在click事件中添加如下方法
首先在点击事件中传入 $event ;示例:@click = "doSome($event)";
然后在事件中如下做法:
doSome(event){
if(event._constructed){return true;}
<!--在此下面写入你的事件-->
} momentum: true (默认值:true) 当快速滑动时是否开启滑动惯性
bounce: true (默认值:true) 是否启用回弹动画效果
bounceTime: 700 (默认值:700,单位:ms)回弹动画的动画时长。
probeType: 可选值:1、2、3; (默认值: 0 不派发scroll事件)想要获取滚动实时位置时派发事件的截流情况
1 滚动的时候会派发scroll事件,会截流;
2 滚动的时候实时派发scroll事件,不会截流;
3 除了实时派发scroll事件,在swipe的情况下仍然能实时派发scroll事件;
4、better-scroll常用方法
refresh() -> 重新计算 better-scroll,当 DOM 结构发生变化的时候务必要调用确保滚动的效果正常 scrollTo(x, y, time, easing) -> 滚动到指定的位置;
x: X轴位置;
y: Y轴位置;
time: 到达指定位置所需时间,单位ms;
easing: 动画函数(一般不建议修改) scrollBy(x, y, time, easing) -> 相对于当前位置偏移滚动 x,y 的距离;
x: 当前位置偏移X轴的距离
y: 当前位置偏移Y轴的距离
time: 到达偏移位置所需时间,单位ms;
easing: 动画函数(一般不建议修改) scrollToElement(el, time, offsetX, offsetY, easing) -> 滚动到指定的目标元素
el: 目标元素;
time: 到达目标元素所需时间,单位ms;
offsetX: 距离目标元素所偏移X轴的距离;设置为true时,到达目标元素中心位置
offsetY: 距离目标元素所偏移Y轴的距离;设置为true时,到达目标元素中心位置
easing: 动画函数(一般不建议修改) 使用示例:
this.aBScroll.scrollToElement("li",300);
5、better-scroll 中的srcoll系列事件
beforeScrollStart -> 触发时机:滚动开始之前
scrollStart -> 触发时机:滚动开始时
scroll -> 触发时机:滚动过程中,具体时机取决于选项中的 probeType。
scrollCancel -> 触发时机:滚动被取消。
scrollEnd -> 触发时机:滚动结束。
touchEnd -> 触发时机:鼠标/手指离开。
使用示例:
this.aBScroll.on('scroll',(pos) => {
// 你可以打印一下参数pos中都包含了什么!
<!--写入你要触发的事情-->
})
想要了解更多参数及其使用方法请前往:better-scroll文档地址
better-scroll在vue项目中的使用的更多相关文章
- vue项目中遇到的一些问题
或访问:https://github.com/littleHiuman/experiences-about-vue 欢迎补充! vuex 状态 vue-cli 命令行 vue vue vue-rou ...
- vue 项目中实用的小技巧
# 在Vue 项目中引入Bootstrap 有时在vue项目中会根据需求引入Bootstrap,而Bootstrap又是依赖于jQuery的,在使用npm按照时,可能会出现一系列的错误 1.安装jQu ...
- 如何在VUE项目中添加ESLint
如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...
- 在vue项目中, mock数据
1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data.json 文件 2.在build目录下的 dev-server.js的文件作如下 ...
- 浅谈 Axios 在 Vue 项目中的使用
介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特性 它主要有如下特性: 浏览器端发起XMLHttpRequests请求 Node端发起http ...
- 去除vue项目中的#及其ie9兼容性
一.如何去除vue项目中访问地址的# vue2中在路由配置中添加mode(vue-cli创建的项目在src/router/index.js) export default new Router({ m ...
- vue 项目中当访问路由不存在的时候默认访问404页面
前言: 在Vue项目中,当访问的页面路由不存在或错误时,页面显示为一片空白.然而,通常我们需要对访问url不存在或者错误的情况下添加默认的404页面,即not found页面. 一般的处理方法是: 在 ...
- vue项目中遇到的那些事。
前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vu ...
- scss/less语法以及在vue项目中的使用(转载)
1.scss与less都是css的预处理器,首先我们的明白为什么要用scss与less,因为css只是一种标记语言,其中并没有函数变量之类的,所以当写复杂的样式时必然存在局限性,不灵活,而scss与l ...
- Vue项目中GraphQL入门学习与应用
1.GraphQL是什么,能干什么? 正如官网所说,GraphQL是一种用于API查询的语言.Facebook 的移动应用从 2012 年就开始使用 GraphQL.GraphQL 规范于 2015 ...
随机推荐
- VUE基础回顾2
1.响应式 vue修改了每个添加到data上的对象,当该对象发生变化时vue会收到通知,从而实现响应式.对象的每个属性都会被替换为getter,setter方法. 有两种方式实现data对象的监听 ( ...
- webpack练手项目之easySlide(二):代码分割
Hello,大家好. 在上一篇 webpack练手项目之easySlide(一):初探webpack 中我们一起为大家介绍了webpack的基本用法,使用webpack对前端代码进行模块化打包. 但 ...
- WinRAR捆绑木马
准备好木马文件 server.exe 准备一个小游戏 趣味数学计算 压缩 创建自解压格式压缩文件 自解压选项设置 解压路径设置 设置程序 模式设置 压缩完成 使用 开始玩游戏
- windows环境下安装mysql5.7.20
配置my.ini文件 [client] port=3306 default-character-set=utf8 [mysqld] # 设置为自己MYSQL的安装目录 basedir=D:\Progr ...
- 【OGG】OGG的单向复制配置-支持DDL(二)
[OGG]OGG的单向复制配置-支持DDL(二) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...
- SQL Text Literals 文本
Text Literals 文本 Use the text literal notation to specify values whenever string appears in the synt ...
- 【HCIA Gauss】学习汇总-数据库管理(SQL语法 数据类型 函数)-4
DDL data definition language 数据库定义语言 定义修改等DML data manipulation language 数据库操控语言 增删改 DCL data crontr ...
- spring boot 过滤器、拦截器的区别与使用
原文:https://blog.csdn.net/heweimingming/article/details/79993591 拦截器与过滤器的区别: 1.过滤器和拦截器触发时机不一样,过滤器是在请求 ...
- RedisTemplate在项目中的应用
如下主要通去年无聊做的 "涂涂影院后台管理系统" 一个 demo,看 RedisTemplate 的使用. 体验地址:http://video.71xun.com:8080 账户 ...
- Tensorflow细节-Tensorboard可视化-简介
先搞点基础的 注意注意注意,这里虽然很基础,但是代码应注意: 1.从writer开始后边就错开了 2.writer后可以直接接writer.close,也就是说可以: writer = tf.summ ...