基于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 相关文章推荐
javascript div 弹出可拖动窗口
Feb 26 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
纯js简单日历实现代码
Oct 05 Javascript
初识Node.js
Sep 03 Javascript
Javascript window对象详解
Nov 12 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
Jan 07 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
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
如何测量vue应用运行时的性能
2019/06/21 Javascript
javascript实现计算器功能
2020/03/30 Javascript
Python模块搜索路径代码详解
2018/01/29 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
会计专业自我鉴定范文
2013/12/29 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
网站推广策划方案
2014/06/04 职场文书
青年文明号口号
2014/06/17 职场文书
2014年建筑工作总结
2014/11/26 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers