vue使用swiper踩坑(轮播图不自动播放,上一张下一张按钮不起作用)

Vue中使用swiper解决轮播图问题
在Vue项目中,作者遇到了使用swiper实现轮播图时自动播放和按钮控制失效的问题。尝试将`new Swiper()`放入`mounted`生命周期钩子以及使用`vue-awesome-swiper`插件均未解决问题。最终,通过回退到`vue-awesome-swiper`的3.1.3版本并调整API,成功解决了轮播图的自动播放和按钮功能。

为了不浪费大家时间,先说一下,最后解决办法是使用vue-awesome-swiper,并且要注意版本号及其对应的API,本文中的API写法和3.1.3版本的vue-awesome-swiper是对应的,可以实现轮播图自动播放以及前一张后一张按钮 不失效。

一个心路历程

准备使用swiper实现轮播图

  1. 首先,安装依赖包
$ npm install swiper
  1. 导包及使用
// import Swiper JS
  import Swiper from 'swiper';
  // import Swiper styles
  import 'swiper/swiper-bundle.css';

  const swiper = new Swiper('.swiper-container', {
  // Optional parameters
  direction: 'vertical',
  loop: true,

  // If we need pagination
  pagination: {
    el: '.swiper-pagination',
  },

  // Navigation arrows
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },

  // And if we need scrollbar
  scrollbar: {
    el: '.swiper-scrollbar',
  },
});
<!-- Slider main container -->
<div class="swiper-container">
  <!-- Additional required wrapper -->
  <div class="swiper-wrapper">
    <!-- Slides -->
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
    ...
  </div>
  <!-- If we need pagination -->
  <div class="swiper-pagination"></div>

  <!-- If we need navigation buttons -->
  <div class="swiper-button-prev"></div>
  <div class="swiper-button-next"></div>

  <!-- If we need scrollbar -->
  <div class="swiper-scrollbar"></div>
</div>

坑点:不用框架的情况下可以使用,用了vue框架可以实现轮播,但是发现swiper-button-prev、swiper-button-next可以显示但是没有用。

解决办法1: 把new Swiper()写在mounted里:

// import Swiper JS
  import Swiper from 'swiper';
  // import Swiper styles
  import 'swiper/swiper-bundle.css';

  mounted: function () {
  const swiper = new Swiper('.swiper-container', {
  // Optional parameters
  direction: 'vertical',
  loop: true,

  // If we need pagination
  pagination: {
    el: '.swiper-pagination',
  },

  // Navigation arrows
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },

  // And if we need scrollbar
  scrollbar: {
    el: '.swiper-scrollbar',
  },
});

天真的我发现还是一样的问题,无法自动播放以及前后按钮无作用。

解决办法2: 使用vue-awesome-swiper插件

vue项目要专门使用vue-awesome-swiper插件

  • 首先安装依赖:
npm install vue-awesome-swiper --save-dev
  • 引入:
进入maim.js文件
import vueSwiper from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
    
Vue.use(vueSwiper)
<template>
    <swiper :options="swiperOption">
            <swiper-slide class="swiper-slide" v-for="(item,index) in carouselArr" :key="index">
                <img :src="item"/>
            </swiper-slide>
            <!-- 分页器 -->
            <div class="swiper-pagination"  slot="pagination"></div>   
             <!-- 左右箭头 --> 
            <div class="swiper-button-prev" slot="button-prev"></div> 
            <div class="swiper-button-next" slot="button-next"></div> 
        </swiper>
</template>

<script>
    export default {
        data(){
            return {
                swiperOption:{
                    //显示分页
                    pagination: {
                      el: '.swiper-pagination'
                    },
                    //设置点击箭头
                    navigation: {
                      nextEl: '.swiper-button-next', 
                      prevEl: '.swiper-button-prev'
                    },
                    //自动轮播
                    autoplay: {
                      delay: 2000,
                      //当用户滑动图片后继续自动轮播
                      disableOnInteraction: false,
                    },
                    //开启循环模式
                    loop: true
                }
            }
        }
    }
</script>

还是没有解决!!!!!我都无语了。。。大无语!!!

抠细节

翻了大家遇到这个问题的解决办法,看到一个离谱的,就是说版本不对,之前看到都划过去了,总觉得不会是这个问题。。。后来好多办法都试了,想想前端因为版本号不同,出bug还少吗。。。就因为webpack和webpack-cli的版本不对应项目半天运行不起来的情况还少吗。。。好吧。。。
认命去降版本去了。。。
在这里插入图片描述

  • 降版本到3.1.3:
npm install swiper vue-awesome-swiper@3.1.3 --save

问题解决。。。。啊这。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值