基于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 相关文章推荐
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 Javascript
jquery动画1.加载指示器
Aug 24 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
May 02 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
javascript三元运算符用法实例
Apr 16 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
微信小程序如何实现点击图片放大功能
Jan 21 Javascript
keep-alive保持组件状态的方法
Dec 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实现统计网站在线人数的方法
2015/05/12 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
简单的三步vuex入门
2018/05/20 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
django项目搭建与Session使用详解
2018/10/10 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python对excel文档的操作方法详解
2018/12/10 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
八荣八耻的活动方案
2014/08/16 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
Go语言测试库testify使用学习
2022/07/23 Golang