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 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
JavaScript数据结构与算法之集合(Set)
Jan 29 Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
微信小程序 五星评价功能的实现
Mar 09 Javascript
JS验证input输入框(字母,数字,符号,中文)
Mar 23 Javascript
基于bootstrap实现多个下拉框同时搜索功能
Jul 19 Javascript
解决Vue编译时写在style中的路径问题
Sep 21 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 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
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
js实现每日签到功能
2018/11/29 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python如何通过pyqt5实现进度条
2020/01/20 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Python对excel的基本操作方法
2021/02/18 Python
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
竞选班长演讲稿
2013/12/30 职场文书
高二美术教学反思
2014/01/14 职场文书
美术教学感言
2014/02/22 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
开展创先争优活动总结
2014/08/28 职场文书
大国崛起英国观后感
2015/06/02 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python