详解swiper在vue中的应用(以3.0为例)


Posted in Javascript onSeptember 20, 2018

一、使用方法

官网地址

参考此文章(点击我)

二、常见情况

图片需要动态获取时

待数据加载成功且渲染完毕后,进行节点初始化。例:

axios.post(‘接口地址', 参数).then(response => {  
  this.pages = response.data; //pages 渲染数据的数组
  this.$nextTick(() => { //渲染结束
    // mySwiper 里面的属性按需配置,详情见官网
    let mySwiper = new Swiper(".swiper-container", { 
      initialSlide :0,//默认播放(值为图片下标)
      loop: false,//不循环
      speed: 600, //切换速度
      paginationClickable: true, //点击小点可以切换
    });
   });
});

当有 3 组图片需要依次播放时(多组以此类推)

情景:第 2 组图片滑动最后一张时,需要加载第 3 组图片;第 2 组图片滑动第一张时,需要加载第 1 组图片。

方法:在初始化的时候,配置回调函数onTouchStart(开始滑动的X轴值)和 onTouchEnd(结束滑动的X轴值)。用差值来判断是往前滑还是往后划。

this.$nextTick(() => {
  let mySwiper = new Swiper(".swiper-container", {
   observer: true, //修改swiper自己或子元素时,自动初始化swiper
   observeParents: true, //修改swiper的父元素时,自动初始化swiper     
   onTouchStart: function(swiper) {
    this.positionStart = swiper.getWrapperTranslate();
   },
   onTouchEnd: function(swiper) {
    this.positionEnd = swiper.getWrapperTranslate();
    if (this.positionStart > this.positionEnd && this.pages.length - 1 == this.mySwiper.activeIndex) { 
      //向后滑,加载后一组图片       
    } else if (mySwiper.activeIndex == 0 && this.positionStart < this.positionEnd) {
      //向前划,加载前一组图片  
    }
   }
  });
 });

这时,图片已经加载了另外一组图片,但是各组图片之间没有连贯起来,这就需要用到 slideTo方法去跳转(若加载第 3 组,则跳转到下标第 0 个;若加载第 1 组,则跳转到下标第 图片个数-1 个)。

mySwiper.slideTo('要跳转的图片下标', 10, false) // 10表示跳转速度;false 代表是否触发回到函数

数据方法配置

export default {
 name: '',
 data() {
  return {
   swiperOption: {
    // NotNextTick is a component's own property, and if notNextTick is set to true, the component will not instantiate the swiper through NextTick, which means you can get the swiper object the first time (if you need to use the get swiper object to do what Things, then this property must be true)
    // notNextTick是一个组件自有属性,如果notNextTick设置为true,组件则不会通过NextTick来实例化swiper,也就意味着你可以在第一时间获取到swiper对象,假如你需要刚加载遍使用获取swiper对象来做什么事,那么这个属性一定要是true
    notNextTick: true,
    // swiper configs 所有的配置同swiper官方api配置
    autoplay: 3000,
    // direction : 'vertical',
    effect:"coverflow",
    grabCursor : true,
    setWrapperSize :true,
    // autoHeight: true,
    // paginationType:"bullets",
    pagination : '.swiper-pagination',
    paginationClickable :true,
    prevButton:'.swiper-button-prev',
    nextButton:'.swiper-button-next',
    // scrollbar:'.swiper-scrollbar',
    mousewheelControl : true,
    observeParents:true,
    // if you need use plugins in the swiper, you can config in here like this
    // 如果自行设计了插件,那么插件的一些配置相关参数,也应该出现在这个对象中,如下debugger
    // debugger: true,
    // swiper callbacks
    // swiper的各种回调函数也可以出现在这个对象中,和swiper官方一样
    // onTransitionStart(swiper){
    //  console.log(swiper)
    // },
    // more Swiper configs and callbacks...
    // ...
   }
  }
 },components: {
 swiper,
 swiperSlide
},
 // you can find current swiper instance object like this, while the notNextTick property value must be true
 // 如果你需要得到当前的swiper对象来做一些事情,你可以像下面这样定义一个方法属性来获取当前的swiper对象,同时notNextTick必须为true
 computed: {
  swiper() {
   return this.$refs.mySwiper.swiper
  }
 },
 mounted() {
  // you can use current swiper instance object to do something(swiper methods)
  // 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
  // console.log('this is current swiper instance object', this.swiper)
  // this.swiper.slideTo(3, 1000, false)
 }
}

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

Javascript 相关文章推荐
二级域名转向类
Nov 09 Javascript
JavaScript中常用的六种互动方法示例
Mar 13 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 Javascript
jQuery使用$.ajax提交表单完整实例
Dec 11 Javascript
基于javascript实现全屏漂浮广告
Mar 31 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
基于JSON数据格式详解
Aug 31 Javascript
vue实现城市列表选择功能
Jul 16 Javascript
JS实现电脑虚拟键盘的操作
Jun 24 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 #Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 #Javascript
Vue常见面试题整理【值得收藏】
Sep 20 #Javascript
用vue-cli开发vue时的代理设置方法
Sep 20 #Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 #Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 #Javascript
浅谈React Event实现原理
Sep 20 #Javascript
You might like
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
JavaScript 空间坐标的使用
2020/08/19 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python获取本地计算机名字的方法
2015/04/29 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
python实现AES加密和解密
2019/03/27 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
企业车辆管理制度
2014/01/24 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
检讨书模板
2015/01/29 职场文书
开票证明
2015/06/23 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python