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 结果展示

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

最新文章

  1. AFNetworking 3.0 源码解读(六)之 AFHTTPSessionManager
  2. ABP(现代ASP.NET样板开发框架)系列之9、ABP设置管理
  3. [自学总结] Unity5.3 API 之 Audio Mixer
  4. How do I enable log4net internal debugging?
  5. 用Phaser来制作一个html5游戏——flappy bird (一)
  6. [转]ASP.NET MVC IOC 之AutoFac攻略
  7. loghelper.cs 代码
  8. 桥牌笔记:Show up Squeeze显露挤牌法
  9. 10_放置街灯(Placing Lampposts,UVa 10859)
  10. Android 项目中常用到的第三方组件
  11. pthreads多线程数据采集
  12. 对SVM的个人理解
  13. Python抓取双色球数据
  14. [转]getResource()和getResourceAsStream以及路径问题
  15. 触碰jQuery:AJAX异步详解(转)
  16. python 如何判断对象是否为类(class)
  17. ubuntu14通过trove/redstack安装openstack环境
  18. 从一个针对ASP.NET MVC框架的Controller.Action的请求处理顺序来说整个请求过程。
  19. python学习===从一个数中分解出每个数字
  20. Spring boot 整合mybatis

热门文章

  1. P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)
  2. 制作H5像一个div中一张长图,里边是一条一条信息,需要点击的响应式方法
  3. ADO.Net笔记整理(一)
  4. 【菜逼从零学dp】dp专题
  5. 修改CentOS6.5默认主机名(root下操作)
  6. MFC:关联变量
  7. 如何优雅地用Redis实现分布式锁?
  8. (模拟) codeVs1160 蛇形矩阵
  9. docker核心概念与配置安装
  10. SSL证书安装(Tomcat)腾讯云服务器