详解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 相关文章推荐
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
你必须知道的JavaScript 变量命名规则详解
May 07 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
AngularJS入门教程之REST和定制服务详解
Aug 19 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
Mar 21 Javascript
Vue.js用法详解
Nov 13 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 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教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php实现图片添加水印功能
2014/02/13 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
跟老齐学Python之正规地说一句话
2014/09/28 Python
python递归计算N!的方法
2015/05/05 Python
使用Python写CUDA程序的方法
2017/03/27 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
儿科护理实习自我鉴定
2013/09/19 职场文书
法语专业求职信
2014/07/20 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
北京青年观后感
2015/06/15 职场文书
篮球拉拉队口号
2015/12/25 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android