Categories
Vue 3

Add a Swiper Carousel into a Vue 3 App with Swiper 6

Spread the love

Swiper for Vue.js lets us add a carousel to our Vue 3 app.

In this article, we’ll look at how to add a carousel into our Vue 3 app with Swiper.

Installation

We can install the Swiper package by running:

npm i swiper

Basic Usage

Once we installed the package, we can add a slider by writing:

<template>
  <swiper
    :slides-per-view="3"
    :space-between="50"
    @swiper="onSwiper"
    @slideChange="onSlideChange"
  >
    <swiper-slide v-for="n of 50" :key="n">Slide {{ n }}</swiper-slide>
  </swiper>
</template>
<script>
import { Swiper, SwiperSlide } from "swiper/vue";
import 'swiper/swiper-bundle.css'

export default {
  components: {
    Swiper,
    SwiperSlide,
  },
  methods: {
    onSwiper(swiper) {
      console.log(swiper);
    },
    onSlideChange() {
      console.log("slide change");
    },
  },
};
</script>

We add the swiper component to add the slider.

slides-per-view lets us set the number of slides to show per view.

space-between has the space between slides in pixels.

It emits the swiper event which is emitted when the slider is created.

slideChange event is emitted when we change slides.

We import the swiper/swiper-bundle.css file to add styles for the slides.

swiper-slide has the slides for the slider.

We can add the zoom prop to enable additional wrapper for zoom mode if it’s set to true .

virtualIndex has the index for virtual slides.

SwiperSlide Slot Props

We can get some data from the swiper-slide ‘s component’s slot props.

For example, we get the isActive prop to see if the slide is active:

<template>
  <swiper
    :slides-per-view="3"
    :space-between="50"
    @swiper="onSwiper"
    @slideChange="onSlideChange"
  >
    <swiper-slide v-slot="{ isActive }" v-for="n of 50" :key="n"
      >Slide {{ n }} {{ isActive ? "active" : "not active" }}</swiper-slide
    >
  </swiper>
</template>
<script>
import { Swiper, SwiperSlide } from "swiper/vue";
import "swiper/swiper-bundle.css";

export default {
  components: {
    Swiper,
    SwiperSlide,
  },
  methods: {
    onSwiper(swiper) {
      console.log(swiper);
    },
    onSlideChange() {
      console.log("slide change");
    },
  },
};
</script>

It also provides the isPrev slot prop to see whether a slide is a slide previous to the active one.

The isNext slot prop to see whether a slide is a slide next to the active one.

isVisible indicates whether the current slide is visible.

isDuplicate indicates whether the slide is a duplicate slide.

Slots

We can populate slots provided by the swiper component.

For instance, we can write:

<template>
  <swiper
    :slides-per-view="3"
    :space-between="50"
    @swiper="onSwiper"
    @slideChange="onSlideChange"
  >
    <swiper-slide v-for="n of 50" :key="n">Slide {{ n }}</swiper-slide>
    <template v-slot:container-start>
      <span>Container Start</span>
    </template>
    <template v-slot:container-end>
      <span>Container End</span>
    </template>
    <template v-slot:wrapper-start>
      <span>Wrapper Start</span>
    </template>
    <template v-slot:wrapper-end>
      <span>Wrapper End</span>
    </template>
  </swiper>
</template>
<script>
import { Swiper, SwiperSlide } from "swiper/vue";
import "swiper/swiper-bundle.css";

export default {
  components: {
    Swiper,
    SwiperSlide,
  },
  methods: {
    onSwiper(swiper) {
      console.log(swiper);
    },
    onSlideChange() {
      console.log("slide change");
    },
  },
};
</script>

We populate the container-start slot to add content to the top of the slider container.

container-end adds content to the bottom of the slider container

wrapper-start adds content before the first slide.

wrapper-end adds content after the last slide.

Conclsion

We can add sliders into our Vue 3 app with Swiper 6.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *