Vue3 Swiper.js中Control组件一控制多的方法

文章介绍了如何在Vue中使用Swiper的Controller组件实现控制和被控制的swiper滑块,并提到在实践中遇到的坑,如使用ref获取实例的问题和确保位置对应性。最后指出链式控制可以解决这个问题。
摘要由CSDN通过智能技术生成

代码如下

<template>
  <!-- Main Swiper -> pass controlled swiper instance -->
  <swiper
    :modules="[Controller]"
    :controller="{ control: [firstSwiper , secondSwiper ] }"
    
  >
    <swiper-slide>1</swiper-slide>
    <swiper-slide>2</swiper-slide>
  </swiper>

  <!-- Controlled Swiper -> store swiper instance -->
  <swiper :modules="[Controller]" @swiper="setFristSwiper" id="firstSwiper">
    <swiper-slide>1</swiper-slide>
    <swiper-slide>2</swiper-slide>
  </swiper>
  <swiper :modules="[Controller]" @swiper="setSecondSwiper" id="secondSwiper">
    <swiper-slide>1</swiper-slide>
    <swiper-slide>2</swiper-slide>
  </swiper>
</template>
<script >
  import { ref } from 'vue';
  import { Controller } from 'swiper';
  import { Swiper, SwiperSlide } from 'swiper/vue';

  export default {
    components: {
      Swiper,
      SwiperSlide,
    },
    setup() {
      let firstSwiper = ref(null)
      let secondSwiper = ref(null)
      const setFristSwiper = (swiper) => {
        firstSwiper.value = swiper;

      };
      const setSecondSwiper = (swiper) => {
        secondSwiper.value = swiper
        
      };

      return {
        Controller,
        firstSwiper,
        secondSwiper,
        setSecondSwiper,
        // controlledSwiper,
        setFristSwiper,
      };
      
    },
  };
</script>

实测可以运行。

由官方文档的vue使用control组件的demo改写。html区域的注释是官方的。

控制的和被控制的swiper都需要controller模块,被控制的要设置@swiper的方法,名字不必对照id,自己取的也可以。

被控制的要设置id而不是ref,id和setup里的变量同名。这里就是一个大坑,官方的注释如上写着说swiper的实例,我下意识的使用ref去获取实例,死活弄不成。。。然后尝试document的方法,又发现在setxxx的方法(因为当时没写ref所以去掉了.value)里显然这么写是没用的,又把ref加了回去,发现能用了。。最后去掉了一些代码剩下这些应该就是必要的代码了。。

(不过这个写法虽然能动但数组第二个被控制的swiper会不和控制的swiper位置对应,但目前已经知道了怎么设置control组件后,改成链式控制就轻车熟路了,实测链式控制内容是能对上的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
animateControl v1.0.3 的功能特点: 1、完全兼容swiper的loop模式,完美支持swiper的嵌套。 2、完美支持animate.css,能够为页面的任意元素添加动画。 3、完美支持为单个元素同时添加多个animate.css动画效果(无需进行HTML标签的嵌套),并且,可以随意控制这些动画效果的播放方式。 4、能够设置每一个动画效果的播放方式:同步播放、依次播放、循环播放。 5、能够设置每一个动画效果的动画类型:进入动画、表演动画、退出动画(在animate.css的源码,opacity值从0至100的是进入动画,没有opacity属性的是表演动画。opacity值从100到0的是退出动画)。 6、实现了排版效果、动画效果、动画控制的完美分离,极大的提高了开发效率,能够在很短的时间内实现复杂的动画效果控制。 7、animateControl 不与swiper结合时,可对网页的其它元素添加动画效果,并进行控制。 8、能够让不懂JS代码的人,经过简单的学习,就能快速的制作HTML5+CSS3动态微网页。 9、相较于上一个版本,在 v1.0.3 对整个核心代码进行了优化,大大提升了运行速率,使动画播放更流畅。 10、相较于上一个版本,在 v1.0.3 简化了所有参数的名称,让使用变得更加简单(用更少的代码,就能实现更复杂的效果)。 11、本次发布的动画控制器文件为min版,大大减少了文件的体积(下载解压后,文件位置在:js/swiper.animate.min.js)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值