Home > Article > Web Front-end > How to implement carousel component using Vue?
With the popularity of mobile devices, the carousel component has become an indispensable part of many front-end projects. In this article, we will introduce step by step how to implement a simple carousel component using Vue.
Use Vue-cli to initialize a new Vue project and install dependent libraries:
vue create slideshow cd slideshow npm install --save vue-router vue-awesome-swiper
Among them, vue -router
is the routing library officially provided by Vue, and vue-awesome-swiper
is a Vue-encapsulated Swiper plug-in.
Create a folder named components
in the src
directory, in which Create a component file named Slideshow.vue
:
<template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="item in list" :key="item.id"> <img :src="item.src" alt="item.title" /> </div> </div> <div class="swiper-pagination"></div> <div class="swiper-button-next"></div> <div class="swiper-button-prev"></div> </div> </template> <script> import Swiper from 'vue-awesome-swiper'; import 'swiper/css/swiper.css'; export default { name: 'Slideshow', props: { list: { type: Array, default: () => [], }, }, components: { Swiper, }, mounted() { this.initSwiper(); }, methods: { initSwiper() { new Swiper('.swiper-container', { loop: true, autoplay: { disableOnInteraction: false, delay: 3000, }, pagination: { el: '.swiper-pagination', clickable: true, }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, }); }, }, }; </script> <style lang="scss"> .swiper-container { width: 100%; height: 100%; .swiper-pagination { position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%); } .swiper-button-next, .swiper-button-prev { position: absolute; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; cursor: pointer; z-index: 20; background-color: rgba(0, 0, 0, 0.3); border-radius: 50%; display: flex; justify-content: center; align-items: center; } .swiper-button-next:hover, .swiper-button-prev:hover { background-color: rgba(0, 0, 0, 0.6); } .swiper-button-next { right: 20px; } .swiper-button-prev { left: 20px; } } </style>
In this component, we use the vue-awesome-swiper
plug-in to achieve the carousel effect. The list
property is defined in props
and is used to receive carousel chart data. The initSwiper
method is called in the mounted
hook to initialize the carousel image.
In the App.vue
file, we can use the carousel component we just created:
<template> <div id="app"> <slideshow :list="slideshowList" /> </div> </template> <script> import Slideshow from './components/Slideshow.vue'; export default { name: 'App', components: { Slideshow, }, data() { return { slideshowList: [ { id: 1, src: require('./assets/slideshow1.jpg'), title: '轮播图1' }, { id: 2, src: require('./assets/slideshow2.jpg'), title: '轮播图2' }, { id: 3, src: require('./assets/slideshow3.jpg'), title: '轮播图3' }, ], }; }, }; </script> <style> #app { text-align: center; } </style>
defines an array slideshowList
in data
to store the data of the carousel. In the template, we use the custom tag slideshow
to reference the carousel component and pass slideshowList
to the component.
So far, we have successfully implemented a carousel component using Vue. Through this example, we can see Vue's componentization ideas and the use of dependency injection, as well as how to use third-party plug-ins to achieve some complex effects. By implementing the carousel component ourselves, we can also have a deeper understanding of Vue's life cycle and hooks.
The above is the detailed content of How to implement carousel component using Vue?. For more information, please follow other related articles on the PHP Chinese website!