13、vue2.0利用better-scroll实现轮播图可以自动轮播可以无限循环轮播
2017-11-06 17:39
761 查看
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>
相关文章推荐
- vue利用better-scroll实现轮播图与页面滚动详解
- vue2.0和better-scroll实现左右联动效果
- 详解vue之better-scroll实现轮播图和页面滚动
- vue2.0使用swiper组件实现轮播效果
- 原来利用SVN的钩子函数可以实现自动的版本更新管理
- vue2.0使用swiper组件实现轮播
- vue使用Better-Scroll实现纵向滚动
- 利用Vue实现移动端图片轮播组件的方法实例
- 利用PHP安装windows自动运行的服务,PHP程序可以实现长时间、自动运行、定时更新功能,直接可以用在项目中的类源代码
- vue实现横向滚动效果(better-scroll)
- 手把手带你用viewpager实现gallary效果,外加无限循环,自动轮播
- 利用Selenium Webdriver 2.0 实现从Web自动保存文件到本地
- 自定义ViewPager实现图片自动轮播无限循环
- better-scroll&vue实现上拉加载更多下拉刷新
- 前端框架Vue(14)—— 利用 vue 过渡效果(transition)+定时器 实现轮播图通用组件
- better-scroll在vue中实现原生滚动和上拉/下拉加载的效果
- 利用QtQuick 2.0(qml)实现叶子节点可以拖动的强大的树形结构
- 4、利用zookeeper来实现client端自动感知服务器端在线情况,并且可以进行负载均衡。
- vue2.0使用swiper组件实现轮播的示例代码
- 超级详细 一听就会:利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)