基于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 相关文章推荐
关于javascript DOM事件模型的两件事
Jul 22 Javascript
js setTimeout 参数传递使用介绍
Aug 13 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
js判断60秒以及倒计时示例代码
Jan 24 Javascript
利用js制作html table分页示例(js实现分页)
Apr 25 Javascript
原生javascript实现的一个简单动画效果
Mar 30 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
python实现2048小游戏
2015/03/30 Python
Python实现简单字典树的方法
2016/04/29 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python yield的用法实例分析
2020/03/06 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
手机业务员岗位职责
2013/12/13 职场文书
学生安全责任书模板
2014/07/25 职场文书
安全目标管理责任书
2014/07/25 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
离婚协议书的范本
2015/01/27 职场文书
患者身份识别制度
2015/08/06 职场文书
十二月早安励志心语大全
2019/12/03 职场文书