vue滚动插件better-scroll使用详解


Posted in Javascript onOctober 18, 2019

本文实例为大家分享了vue滚动插件better-scroll的具体代码,供大家参考,具体内容如下

1. 概述

1.1 说明

better-scroll是一款重点解决移动端(已支持PC)各种滚动场景需求的插件。例如淘宝聚划算中的类型选择(女装/家纺/生鲜美食等),没有滚动条显示却实现了滚动功能。

1.2 better-scroll安装

npm install better-scroll --save 安装至项目中

1.3 better-scroll使用

better-scroll常见应用场景(列表滚动)的html结构:

<div class="wrapper">
 <ul class="content">
 <li>...</li>
 <li>...</li>
 ...
 </ul>
 <!-- 这里可以放一些其它的 DOM,但不会影响滚动 -->
</div>

备注:better-scroll是作用在外层wrapper容器上的,滚动的部分是content元素。并且better-scroll只处理容器(wrapper)的第一个子元素(content)的滚动,其他的元素都会被忽略。

better-scroll初始化代码:

better-scroll提供了一个类,实例化的第一个参数是一个原生的DOM对象,如果不是传递的对象,而是传递的字符串(类名或者id),better-scroll内部会尝试调用querySelector去获取这个DOM对象。

<->直接传递DOM对象

import BScroll from 'better-scroll'
let wrapper = document.querySelector('.wrapper')
let scroll = new BScroll(wrapper)

<二>传递字符串,使better-scroll内部去获取DOM对象

import BScroll from 'better-scroll'
let scroll = new BScroll('.wrapper')

2. 代码

2.1 代码示例

2.1 子组件scrollChild(横向滚动组件)

<template>
 <div class='move-tabs'>
 <div class='tabs-wrapper' ref='tabsWrapper'>
  <ul ref='tab'>
  <li v-for='(item, index) in tabs' :key='index'>
   <div class='tab-item'>
   <div class='expand-block'>
    {{item.name||'无'}}
   </div>
   </div>
  </li>
  </ul>
 </div>
 </div>
</template>
<script>
 import BScroll from 'better-scroll'

 export default {
 props: {
  data: Array,
 },
 data() {
  return {
  tabs: [],
  mX: 0,
  tabWidth: 300,
  }
 },
 mounted() {
  this.$nextTick(() => {
  console.log(this.data)
  this.tabs = this.data
  this._initMenu()
  })
 },
 methods: {
  _initMenu() {
  const tabsWidth = this.tabWidth
  const width = this.tabs.length * tabsWidth
  this.$refs.tab.style.width = `${width}px`
  this.$nextTick(() => {
   if (!this.scroll) {
   this.scroll = new BScroll(this.$refs.tabsWrapper, {
    scrollX: true,
    eventPassthrough: 'vertical',
   })
   } else {
   this.scroll.refresh()
   }
  })
  },
 },
 }
</script>
<style scoped>
 .move-tabs {
 position: relative;
 top: 0;
 bottom: 0;
 width: 100%;
 }
 .tabs-wrapper {
 height: 120px;
 width: 100%;
 box-sizing: border-box;
 overflow: hidden;
 white-space: nowrap;
 }
 .tab-item {
 float: left;
 width: 280px;
 height: 120px;
 padding: 10px;
 margin-right: 20px;
 background: #f5f5;
 box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.1);
 border-radius: 4px;
 }
 .expand-block {
 font-size: 30px;
 font-weight: bold;
 color: #333333;
 }
</style>

2.1 父组件scrollParent(调用子组件)

<template>
<div>
 <child-scroll :data='scrollList' />
</div>
</template>

<script>
 import ChildScroll from '../components/scrollChild'
 export default {
 name: "scrollParent.vue",
 components: {
  ChildScroll,
 },
 data(){
  return {
  scrollList:[
   {name:'北京'},
   {name:'上海'},
   {name:'杭州'},
   {name:'广州'},
   {name:'郑州'},
   {name:'深圳'},
   {name:'合肥'},
   {name:'徐州'},
   {name:'西安'},
   {name:'石家庄'},
   {name:'呼和浩特'},
   {name:'兰州'},
   {name:'包头'},
   {name:'重庆'},
  ]
  }
 },
 }
</script>

<style scoped>

</style>

2.2 结果展示

可左右滑动出所需要展示的列表集合

vue滚动插件better-scroll使用详解

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

Javascript 相关文章推荐
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
jQuery Validate插件实现表单强大的验证功能
Dec 18 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
ES6中的箭头函数实例详解
Apr 06 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
vue ssr 指南详读
Jun 29 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 Javascript
javascript Number 与 Math对象的介绍
Nov 17 Javascript
VUE实现密码验证与提示功能
Oct 18 #Javascript
VUE实现图片验证码功能
Nov 18 #Javascript
countUp.js实现数字滚动效果
Oct 18 #Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 #Javascript
细述Javascript的加法运算符的具体使用
Oct 18 #Javascript
ElementUI之Message功能拓展详解
Oct 18 #Javascript
js实现简易计算器功能
Oct 18 #Javascript
You might like
php 设计模式之 工厂模式
2008/12/19 PHP
PHP 判断变量类型实现代码
2009/10/23 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python实现井字棋小游戏
2020/03/04 Python
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
本科毕业生专业自荐书范文
2014/02/05 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python