使用的swiper版本

swiper组件在html中使用,只需直接引用先关的js文件以及css文件即可,但在vue中使用却截然不同。
声明:博主先用的swiper的版本(6.7.0)
在这里插入图片描述

坑一:css导包错误

在使用过程中,如果使用低版本的方式在mounted中挂载,即可触发隐藏彩蛋,发现无法出现上一个和下一个的按钮,如图所示
在这里插入图片描述

引入的css样式包为

@import url("…/…/…/…/node_modules/swiper/swiper-min.css");

切换导包为

@import url("…/…/…/…/node_modules/swiper/swiper-bundle.css");

按钮出现
在这里插入图片描述
但是即使按钮出现,点击按钮却无法实现达到切换效果并且,只支持鼠标滑动切换,不能自动切换轮播,这里就涉及到swiper的第二个坑。

坑二:需导入多个方法才能实现按钮及其他功能的功能

第一更改导入,不但导入swiper这个包

import { Swiper, Navigation } from ‘swiper’//导入两个方法

并在创建swiper对象时加入这一句话

Swiper.use([Navigation]);//实现按钮点击切换的效果

完美实现,按钮的小功能。创建对象代码如下

<script>
import { Swiper, Navigation } from 'swiper'//导入两个方法

export default {
  mounted () {
    Swiper.use([Navigation]);//实现按钮点击切换的效果

    new Swiper('#rotation', {
      autoplay: {
        delay: 2000,
        disableOnInteraction: false
      },
      navigation: {
        nextEl: '#rotation_next',
        prevEl: '#rotation_prev',
      },
    });

  },
}
</script>

即便如此,在呈现出的效果,发现swiper自带的轮播功能却都无法正常运行。及轮播代码的模块无法正常运行。

 autoplay: {
        delay: 2000,
        disableOnInteraction: false
      },

查阅了很多资料才发现,要实现这一功能,仅仅需要导入一个小小的模块,并且在创建swiper对象时使用,即可实现,原本的轮播功能。

import { Swiper, Navigation, Pagination, Autoplay } from 'swiper'
  Swiper.use([Autoplay, Navigation, Pagination]);
    //实现按钮点击切换以及轮播的效果

完整代码如下:
可自行复制粘贴使用,查看效果

<template>
  <div
    class="swiper-container"
    id="rotation"
  >
    <div class="swiper-wrapper">
      <div class="swiper-slide">Slide 1</div>
      <div class="swiper-slide">Slide 2</div>
      <div class="swiper-slide">Slide 3</div>
      <div class="swiper-slide">Slide 4</div>
      <div class="swiper-slide">Slide 5</div>
      <div class="swiper-slide">Slide 6</div>
      <div class="swiper-slide">Slide 7</div>
      <div class="swiper-slide">Slide 8</div>
      <div class="swiper-slide">Slide 9</div>
      <div class="swiper-slide">Slide 10</div>
    </div>
    <!-- Add Arrows -->
    <div
      class="swiper-button-next"
      id="rotation_next"
    ></div>
    <div
      class="swiper-button-prev"
      id="rotation_prev"
    ></div>

  </div>
</template>
<script>
import { Swiper, Navigation, Pagination, Autoplay } from 'swiper'


export default {
  mounted () {
    Swiper.use([Autoplay, Navigation, Pagination]);
    //实现按钮点击切换以及轮播的效果

    new Swiper('#rotation', {
      autoplay: {
        delay: 2000,
        disableOnInteraction: false
      },
      navigation: {
        nextEl: '#rotation_next',
        prevEl: '#rotation_prev',
      },
    });

  },
}
</script>
<style lang="scss" scoped>
@import url("../../../../node_modules/swiper/swiper-bundle.css");

.swiper-container {
  width: 100%;
  height: 100%;
}
.swiper-slide {
  text-align: center;
  font-size: 18px;

  background-color: rgb(128, 134, 132);

  /* Center slide text vertically */
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  transition: 300ms;
  transform: scale(0.8);
}
.swiper-slide-active,
.swiper-slide-duplicate-active {
  transform: scale(1);
}
.text {
  background-color: aquamarine;
  width: 400px;
  height: 400px;
}
</style>

vue的新手小白,若有哪里不对请留言指正!!!

Logo

前往低代码交流专区

更多推荐