13、vue2.0利用better-scroll实现轮播图可以自动轮播可以无限循环轮播
来源:互联网 发布:canvas nest.js下载 编辑:程序博客网 时间:2024/05/20 07:54
1.安装better-scroll
在根目录中package.json的dependencies中添加:
"better-scroll": "^0.2.4",
然后npm install 安装
2.封装代码slider
<template> <div class="slide_box"> <div class="slide" ref="slider"> <div class="slide-group" ref='slideGroup'> <slot> </slot> </div> <div class="dots"> <span class="dot" :class="{dotActive: (currentPageIndex) === index }" v-for="(item, index) in dots"></span> </div> </div> </div></template><script> import BScroll from 'better-scroll' export default { props: { loop: { type: Boolean, default: true, }, autoPlay: { type: Boolean, default: true, }, interval: { type: Number, default: 1000 } }, data() { return { dots:[], currentPageIndex:0 } }, mounted() { this.setSliderWidth(); //设置轮播图的宽度 this.init(); if(this.autoPlay) { this.play(); } }, methods: { setSliderWidth() { this.children = this.$refs.slideGroup.children; this.dots = new Array(this.children.length) let width =0; let sliderWidth = this.$refs.slider.clientWidth; for(let i = 0; i < this.children.length; i ++){ width += sliderWidth; } if(this.loop){ width += 2*sliderWidth; } this.$refs.slideGroup.style.width = width + 'px'; }, init(){ var vm = this; // 实例化scroll this.scroll = new BScroll(this.$refs.slider, { scrollX: true, scrollY: false, momentum: false, //关闭或者打开惯性运动的执行 snap: true, //隔断(翻页) snapLoop: this.loop, //无限滚动 snapThreshold: 0, snapSpeed: 400, //滑动的时间 }) this.scroll.on('scrollEnd', () => { let pageIndex = this.scroll.getCurrentPage().pageX if(this.loop){ pageIndex -= 1; } this.currentPageIndex = pageIndex; if(vm.autoPlay) { vm.play(); } }) this.scroll.on('beforeScrollStart', () => { if(vm.autoPlay){ clearTimeout(vm.timer); } }) }, play() { let pageIndex = this.currentPageIndex + 1 if (this.loop) { pageIndex += 1 } var vm = this; this.timer = setTimeout(() => { vm.scroll.goToPage(pageIndex, 0 , 400);//跳转到的页数 初始化页数 滑动总时间 },vm.interval) } } }</script><style lang='less'> .slide{ width: 100%; overflow: hidden; height: 150px; position: relative; } .slide-group{ height: 150px; background: red; .slider-item{ width:100vw; height: 150px; background: yellowgreen; float: left; &:nth-type-of(1){ background: red; } } } .dots{ position: absolute; left: 0; right: 0; bottom: 10px; text-align: center; .dot{ background: rgba(255,255,255,.5); display: inline-block; margin: 0 4px; height: 8px; width: 8px; border-radius: 50%; &.dotActive{ width: 20px; border-radius: 5px; background: rgba(255,255,255,0.8); } } }</style>
3、引用的组件
<template> <div class="recommed"> <slide :loop = 'loop' :autoPlay='autoPlay'> <div class="slider-item">11</div> <div class="slider-item">22</div> <div class="slider-item">33</div> <div class="slider-item">444</div> </slide> </div></template><script> import Slide from '@/components/slide.vue' export default { name:'recommend', components:{ Slide }, data (){ return { loop:true, autoPlay:true, } } }</script>
阅读全文
1 0
- 13、vue2.0利用better-scroll实现轮播图可以自动轮播可以无限循环轮播
- 自定义轮播图,实现无限轮播、自动轮播、按下停止轮播
- 无限轮播+自动轮播的实现
- 自动轮播+无限轮播
- ViewPager 无限轮播 自动轮播
- ViewPager 无限轮播自动轮播
- ViewPager实现图片的自动轮播和无限循环
- 无限自动轮播
- Handler实现的无限自动轮播
- ViewPager实现无限自动轮播
- 广告栏(自动轮播,无限循环)-图片轮播控件Banner的简单使用总结
- ViewPager无限自动轮播
- ViewPager无限自动轮播
- 广告无限轮播+自动轮播 Banner
- ViewPger的无限轮播 自动轮播 和加点
- Android 3D画廊采用Gallery实现无限循环、自动轮播
- ViewPager实现图片自动轮播无限循环(完美流畅版)
- Android使用ViewPager实现图片轮播(高度自适应,左右循环,自动轮播)
- Android RecyclerView下拉刷新和上拉加载更多
- 虚函数
- C++中文件的读写(MFC)
- Python_字典
- 文本数据挖掘-----词向量
- 13、vue2.0利用better-scroll实现轮播图可以自动轮播可以无限循环轮播
- 如何将原生PDF转为纯图像Word?
- golang http server 源码解析与说明
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 惊!Linux 爆新漏洞,长按回车键70秒即可获得 root 权限
- ABAP: 内表到xml,以excel形式发送邮件
- Android自定义控件7----滑动动画scrollTo/scrollBy使用
- 检测TCP连接是否在线
- NYOJ喷水装置(一)