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 相关文章推荐
Mootools 1.2教程 输入过滤第二部分(字符串)
Sep 15 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
jQuery下拉美化搜索表单效果代码分享
Aug 25 Javascript
js将json格式的对象拼接成复杂的url参数方法
May 25 Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 Javascript
vue 集成jTopo 处理方法
Aug 07 Javascript
解决webpack多页面内存溢出的方法示例
Oct 08 Javascript
vue使用showdown并实现代码区域高亮的示例代码
Oct 17 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
js判断鼠标移入移出方向的方法
Jun 24 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中的日期处理方法集锦
2007/01/02 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
ext 代码生成器
2009/08/07 Javascript
Exjs 入门篇
2010/04/07 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
详解jquery和vue对比
2019/04/16 jQuery
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python 默认参数相关知识详解
2019/09/18 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
审计班子对照检查材料
2014/08/27 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
我爱我班主题班会
2015/08/13 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
教你怎么用python实现字符串转日期
2021/05/24 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python