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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
May 10 Javascript
canvas实现动态小球重叠效果
Feb 06 Javascript
Vue.use源码分析
Apr 22 Javascript
Vue学习笔记进阶篇之单元素过度
Jul 19 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
你或许不知道的一些npm实用技巧
Jul 04 Javascript
Typescript的三种运行方式(小结)
Sep 18 Javascript
Vue 2.0双向绑定原理的实现方法
Oct 23 Javascript
JS实现网站吸顶条
Jan 08 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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 Mysql日期和时间函数集合
2007/11/16 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
python简单实现旋转图片的方法
2015/05/30 Python
对Python3中的input函数详解
2018/04/22 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
Python----数据预处理代码实例
2019/03/20 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
在python3中实现更新界面
2020/02/21 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
财务会计专业推荐信
2013/11/30 职场文书
高中军训感言500字
2014/02/24 职场文书
手机银行营销方案
2014/03/14 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
垃圾桶标语
2014/06/24 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
小学毕业感言100字
2015/07/30 职场文书
小学新课改心得体会
2016/01/22 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js