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)的更多相关文章
- Infinite Scroll - jQuery & WP 无限滚动插件
无限滚动(Infinite Scroll)也称为自动分页.滚动分页和无限分页.常用在图片.文章或其它列表形式的网页中,用来在滚动网页的时候自动加载下一页的内容.Infinite Scroll 这款 ...
- 页面滚动插件 better-scroll 的用法
better-scroll 是一个页面滚动插件,用它可以很方便的实现下拉刷新,锚点滚动等功能. 实现原理:父容器固定高度,并设置 overflow:hidden,子元素超出父元素高度后将被隐藏,超出部 ...
- MUI 滚动插件使用
在Vue中 使用MUI滚动插件 官方文档地址:http://dev.dcloud.net.cn/mui/ui/#scroll 示例:初始化scroll控件: mui('.mui-scroll-wrap ...
- 手写JS无缝滚动插件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示
用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件 ...
- vue各种插件汇总
https://blog.csdn.net/wh8_2011/article/details/80497620(copy) Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一 ...
- vue常用插件汇总
UI-框架element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - 轻量 ...
- 基于jquery的锚点滚动插件(百度百科效果) anchorScroll.js
1.插进使用场景 请打开https://baike.baidu.com/item/%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB#hotspotmining,查看百度百科页面 ...
- (转)15个非常棒的jQuery无限滚动插件【瀑布流效果】
原文地址:http://www.cnblogs.com/lyw0301/archive/2013/06/19/3145084.html 现在,最热门的网站分页趋势之一是jQuery的无限滚动(也即瀑布 ...
随机推荐
- Git 本地保存账号密码的删除或修改
转自:https://blog.csdn.net/lwqldsyzx/article/details/61228299 Git 本地拉取代码时需要输入用户名和密码时,会自动将用户名密码信息保存起来.需 ...
- MyBatis-Plus
一.通用SQL 1.简介:(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 2.定义Javabean中成员变量所使用的的类型: ...
- Transformer
参考资料: [ERT大火却不懂Transformer?读这一篇就够了] https://zhuanlan.zhihu.com/p/54356280 (中文版) http://jalammar.gith ...
- 【pytorch】pytorch-backward()的理解
pytorch-backword函数的理解 函数:\(tensor.backward(params)\) 这个params的维度一定要和tensor的一致,因为tensor如果是一个向量y = [y1 ...
- nginx--default_server定义规则及配置
nginx 的 default_server 指令可以定义默认的 server 出处理一些没有成功匹配 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 de ...
- Java单例模式的实现
单例的实现 单例设计模式的问题 1. 线程安全问题用synchronized修饰实例化部分代码 2. 性能问题–采用懒汉式实例化 3. 指令重排序问题–用volatile ...
- 「译」图解 ArrayBuffers 和 SharedArrayBuffers
作者:Lin Clark 译者:Cody Chan 原帖链接:A cartoon intro to ArrayBuffers and SharedArrayBuffers 这是图解 SharedArr ...
- 分布式协调服务Zookeeper集群之ACL篇
分布式协调服务Zookeeper集群之ACL篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zookeeper ACL相关知识概览 1>.zookeeper官方文档(h ...
- chrome浏览器默认打开网址并全屏
1.创建chrome快捷方式. 2.右击快捷方式点击属性. 3.属性面板快捷方式下目标的默认内容后添加“ 页面地址 --kiosk”.[注意网页地址和--kiosk之前各有一个英文的空格] 4.点击确 ...
- full join no满连接的使用
查询各个部门工资范围,按照1000~2000,2000~3000....这样的格式显示人数 select * from (select job,count(*) as "1000~2000& ...