基于vue实现swipe分页组件实例


Posted in Javascript onMay 25, 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;
  }
}

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

Javascript 相关文章推荐
jQuery基础知识filter()和find()实例说明
Jul 06 Javascript
jquery关于图形报表的运用实现代码
Jan 06 Javascript
javascript权威指南 学习笔记之变量作用域分享
Sep 28 Javascript
基于jQuery的模仿新浪微博时间的组件
Oct 04 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
JS实现动画兼容性的transition和transform实例分析
Dec 13 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
vue中各组件之间传递数据的方法示例
Jul 27 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
JavaScript判断数据类型有几种方法及区别介绍
Sep 02 Javascript
Javascript 实现匿名递归的实例代码
May 25 #Javascript
Kotlin学习第一步 kotlin语法特性
May 25 #Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 #jQuery
jQuery模拟实现天猫购物车动画效果实例代码
May 25 #jQuery
jquery.masonry瀑布流效果
May 25 #jQuery
Node.js操作redis实现添加查询功能
May 25 #Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 #jQuery
You might like
由php if 想到的些问题
2008/03/22 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
最新pycharm安装教程
2020/11/18 Python
CSS3 简写animation
2012/05/10 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
旅游网创业计划书
2014/01/31 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
情人节寄语大全
2014/04/11 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
党员理论学习心得体会
2016/01/21 职场文书
导游词之神仙居景区
2019/11/15 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书