基于vue实现swipe轮播组件实例代码


Posted in Javascript onMay 24, 2017

项目背景

图片轮播是前端项目必有项,当前有很多效果很酷炫的轮播插件,例如Swiper。

但是当项目中的图片轮播只需要一个很简单的轮播样式,比如这样的

基于vue实现swipe轮播组件实例代码

我们引用这样一个110k的大插件,就大材小用了。再安利一下,swiper2.x和swiper3.x对移动和PC端支持情况如下图

基于vue实现swipe轮播组件实例代码

当当当当~~~

我们今天的主角登场了,thebird/Swipe,这个插件完成了图片轮播需要的基本功能,只有14.2k,真真的轻量级 啊。还有,还有

基于vue实现swipe轮播组件实例代码

翻译一下,就是俺们全支持,不管你是PC端(IE7+)还是移动端浏览器。此处应该有掌声,哈哈~

简而言之,就是当需要一个简单的轮播时,可以选用thebird/Swipe,自己写一个组件。

举个栗子,就是我实现的这个—— 基于vue实现swipe分页组件,移动端和PC端均适用哦。

Result

基于vue实现swipe轮播组件实例代码

Usage

一般情况,轮播图片因为是要经常换的,故在后台定制,定制内容如下

<div><a href=""><img src=" rel="external nofollow" rel="external nofollow" rel="external nofollow" "/></a></div>
<div><a href=""><img src=" rel="external nofollow" rel="external nofollow" rel="external nofollow" "/></a></div>
<div><a href=""><img src=" rel="external nofollow" rel="external nofollow" rel="external nofollow" "/></a></div>

没有定制,必须在代码里写的话,也是可以的,造一个data数组swipeInfo

<!--js-->
data:{
  swipeInfo:[{
    href:"http://www.baidu.com",
    imgSrc:""
  },{
    href:"http://www.baidu.com",
    imgSrc:""
  },{
    href:"http://www.baidu.com",
    imgSrc:""
  }]
},
components: {
  'swipe-module': require('pagination-swipe'),
},

在html中绑定该数据

<!--html-->
<swipe-module :swipeinfo="swipeInfo"></swipe-module>

pagination-swipe组件内容

按照swipe构造html框架,添加了pagination块

<!--template.html-->
<div v-el:swipe class='swipe bar-slider'>
  <div class='swipe-wrap'>
    <div v-for="item in swipeinfo"><a :href=item.href><img :src=item.imgSrc /></a></div>
  </div>
  <!-- 分页 -->
  <div class="pagination">
    <span class="swipe-pagination-switch swipe-active-switch" @click="slideToCur(0)"></span>
    <span class="swipe-pagination-switch" @click="slideToCur($index+1)" v-for="item in slideNum"></span>
  </div>
</div>

vue构造组件

//index.js
require('./style.less');
var Swipe = require('swipe');

Vue.component('pagination-swipe',{
  props: ['swipeinfo'],
  template: require('raw!./template.html'),
  data: function() {
    return {
      mySwipe: {},
      slideNum: {},
    };
  },
  ready: function() {
    var self = this;
    //获取子组件中分页小圈圈
    var slides = self.$els.swipe.getElementsByClassName('swipe-pagination-switch');
    self.mySwipe = new Swipe(self.$els.swipe, {
      startSlide: 0,
      continuous: true,
      speed: 1000,
      auto: 4000,
      stopPropagation: false,
      callback: function(index, elem) {
        //渲染分页小圈圈
        for (var i = 0; i < slides.length; i++) {
          if (i != index) {
            slides[i].style.opacity = "0.2";
            slides[i].style.background = "#000";
          } else {
            slides[index].style.opacity = "1";
            slides[index].style.background = "#ee3a4a";
          }
        }
      },
    });
    self.slideNum = self.mySwipe.getNumSlides() - 1;
  },
  methods: {
    //点击底部小圈圈,跳到其所对应页
    slideToCur: function(index) {
      var self = this;
      self.mySwipe.slide(index, 300);
    },
  }
});
<!--style.less-->
.swipe {
  overflow: hidden;
  visibility: hidden;
  position: relative;
  height: 200/@rem;
  .swipe-wrap {
    position: relative;
    overflow: hidden;
    height: 100%;
    div {
      float: left;
      width: 100%;
      position: relative;
      margin: 0;
      a {
        width: 100%;
        height: 100%;
        background-position: center 0;
        background-repeat: no-repeat;
        background-color: transparent;
        display: block;
        img {
          width: 100%;
          height: 100%;
        }
      }
    }
  }
  .pagination {
    text-align: center;
    position: relative;
    bottom: 40/@rem;
    cursor: pointer;
  }
  .swipe-pagination-switch {
    content: "";
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 100%;
    background: #000;
    opacity: 0.2;
    margin: 0 8px;
    z-index: 10;
    &:first-child {
      background: #ee3a4a;
    }
  }
  .swipe-active-switch {
    opacity: 1;
  }
}

相关推荐

目前基于vue有一个vue-swipe组件,亲测轻量简单易用,基本功能齐全,是做swipe轮播图很好的选择

但是这个有一些问题,

  1. 如果样式放在scoped中,底部小圈圈就不见了~所以,这个的样式使用需要注意样式污染问题.
  2. IE9下没有滑动效果,主要是ie9对css3动画的不兼容

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 动态获取节点代码innerHTML分析 [IE,FF]
Nov 30 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
Apr 01 Javascript
电子商务网站上的常用的js放大镜效果
Dec 08 Javascript
JS获取checkbox的个数简单实例
Aug 19 Javascript
谈谈JavaScript数组常用方法总结
Jan 24 Javascript
原生JS实现左右箭头选择日期实例代码
Mar 14 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
Apr 26 Javascript
Promise扫盲贴
Jun 24 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 Javascript
Vue之封装公用变量以及实现方式
Jul 31 Javascript
js实现分页功能
May 24 #Javascript
基于Vue的文字跑马灯组件(npm 组件包)
May 24 #Javascript
React简单介绍
May 24 #Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 #Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 #Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 #Javascript
jquery Form轻松实现文件上传
May 24 #jQuery
You might like
PHP mkdir()定义和用法
2009/01/14 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python的pycurl包用法简介
2015/11/13 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
特色冷饮店创业计划书
2014/01/28 职场文书
小学教师师德感言
2014/02/10 职场文书
模范家庭事迹材料
2014/02/10 职场文书
初级会计求职信范文
2014/02/15 职场文书
迎新晚会策划方案
2014/06/13 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL