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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
jQuery 添加/移除CSS类实现代码
Feb 11 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
js判断浏览器版本以及浏览器内核的方法
Jan 20 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
Vue.use源码分析
Apr 22 Javascript
在vue项目中引入高德地图及其UI组件的方法
Sep 04 Javascript
详解使用React制作一个模态框
Mar 14 Javascript
使用typescript构建Vue应用的实现
Aug 26 Javascript
JS字符串和数组如何实现相互转化
Jul 02 Javascript
用React Native制作一个简单的游戏引擎
May 27 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类(查找/修改)xml文档
2013/03/26 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
node.js处理前端提交的GET请求
2019/08/30 Javascript
Python的print用法示例
2014/02/11 Python
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
详解Python发送邮件实例
2016/01/10 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
python实现中文文本分句的例子
2019/07/15 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
客房主管岗位职责
2013/12/09 职场文书
保密承诺书
2014/03/27 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
归途列车观后感
2015/06/17 职场文书
健康证明
2015/06/19 职场文书
SQL基础的查询语句
2021/11/11 MySQL