基于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 原型模式实现OOP的再研究
Apr 09 Javascript
10个实用的脚本代码工具
May 04 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
Jun 08 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
Dec 23 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
js实现横向拖拽导航条功能
Feb 17 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
Angularjs验证用户输入的字符串是否为日期时间
Jun 01 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 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 无极分类(递归)实现代码
2010/01/05 PHP
php实现插入排序
2015/03/29 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
接收键盘指令的脚本
2006/06/26 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
基于对象合并功能的实现示例
2017/10/10 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
python实现多人聊天室
2020/03/31 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
国际贸易求职信
2014/07/05 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
公路施工安全责任书
2015/05/08 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL