# swiper - 轮播图

# 1. 安装

npm i swiper

# 10.3.1

# 2. 基础

# 2.1. 参数

# 2.2. 属性

prop desc
activeIndex 当前 slide 的索引,loop 模式,复制的 slide 也会算在内
realIndex 当前非复制块 slide 的索引

# 2.3. 方法

# 3. 示例

地址: swiper-demo —— codesandbox.io (opens new window)

代码:

<template>
  <div class="box">
    <div class="swiper">
      <div class="swiper-wrapper">
        <div class="swiper-slide item" v-for="i in 10">slider{{ i }}</div>
      </div>
    </div>

    <div class="swiper-pagination"></div>

    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
  </div>
</template>
<script>
import { Swiper } from "swiper/bundle";
import "swiper/swiper-bundle.css";

export default {
  mounted() {
    this.swiper = new Swiper(".swiper", {
      slidesPerView: 4,
      spaceBetween: 20,
      loop: true,

      pagination: {
        el: ".swiper-pagination",
        clickable: true,
      },

      navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev",
      },
    });
  },

  beforeUnmounted() {
    if (this.swiper) {
      this.swiper.destroy();
    }
  },
};
</script>
<style lang="scss">
.box {
  position: relative;
  margin-bottom: 24px;
  width: 80%;
  margin: 0 auto;
}

.swiper {
  width: 100%;
  height: 440px;
}

.swiper-slide {
  display: flex;
  justify-content: center;
  align-items: center;
}

.swiper-pagination {
  bottom: -48px;

  .swiper-pagination-bullet {
    margin: 0 12px;
    width: 20px;
    height: 20px;
    border-radius: 100px;
  }

  .swiper-pagination-bullet-active {
    background: #f8884d;
  }
}

.swiper-button-prev,
.swiper-button-next {
  margin-top: -48px;
  width: 80px;
  height: 80px;
  border-radius: 100px;
  background: rgba(0, 0, 0, 0.15);

  &:hover {
    background: rgba(0, 0, 0, 0.55);
  }
}

.swiper-button-prev:after,
.swiper-button-next:after {
  color: #fff;
}

.swiper-button-prev {
  left: -40px;
}

.swiper-button-next {
  right: -40px;
}
</style>

# 4. 参考

本章目录