Home  >  Article  >  Web Front-end  >  How to use Vue to set the product carousel effect

How to use Vue to set the product carousel effect

PHPz
PHPzOriginal
2023-04-12 09:20:291332browse

With the continuous development of the e-commerce market, product display has become an important part of the e-commerce platform. Among them, product carousels, as a way to display products, are increasingly favored by merchants and consumers. This article will introduce how to use Vue to set up a product carousel.

1. Install Vue and Vue-Cli

Before we begin, we need to install Vue and Vue-Cli first. Vue is a lightweight, high-performance, composable JavaScript framework, and Vue-Cli provides a front-end development process and project scaffolding.

First, open the terminal and enter the following command to install Vue:

npm install vue

Then, use the following command to install Vue-Cli:

npm install -g vue-cli

2. Create a Vue project

After the installation is complete, we start creating the Vue project. Open the terminal and enter the following command:

vue create my-project

where, my-project is the name of your project. After the execution is completed, enter the project folder:

cd my-project

3. Install Swiper

This article uses the Swiper library to implement the product carousel, so we need to install Swiper first. In the project root directory, enter the following command:

npm install swiper --save

4. Import Swiper and CSS files

After the installation is complete, introduce Swiper and CSS files into the Vue file. Enter the src/main.js file and add the following code at the beginning:

import Vue from 'vue'
import App from './App.vue'
import 'swiper/css/swiper.css'
import Swiper from 'swiper'
Vue.prototype.$swiper = Swiper
new Vue({
  render: h => h(App),
}).$mount('#app')

Here we introduce Swiper and CSS files, and mount Swiper to the prototype attribute of Vue.

5. Create a product carousel component

In the Vue project, we can split the functional module into individual components. Therefore, in the src/components directory, we create a product carousel component Carousel.vue. The following is the code of the component:

<template>
  <div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide" v-for="(item, index) in dataList">
        <img :src="item">
      </div>
    </div>
    <!-- 如果需要分页器 -->
    <div class="swiper-pagination"></div>
  </div>
</template>

<script>
export default {
  name: 'Carousel',
  props: {
    dataList: {
      type: Array,
      default: () => []
    },
    options: {
      type: Object,
      default: () => {
        return {
          autoplay: false,
          loop: true,
          pagination: {
            el: '.swiper-pagination',
          }
        }
      }
    }
  },
  mounted() {
    this.$nextTick(() => {
      if (this.$swiper) {
        this.initSwiper()
      }
    })
  },
  methods: {
    initSwiper() {
      this.$swiper('.swiper-container', this.options)
    }
  }
}
</script>

<style lang="scss" scoped>
.swiper-container {
  width: 100%;
  height: calc(real(180 / 320) * 100vw);
  overflow: hidden;
  .swiper-wrapper {
    height: 100%;
    .swiper-slide {
      height: 100%;
      overflow: hidden;
      img {
        width: 100%;
        height: 100%;
        object-fit: contain;
      }
    }
  }
  .swiper-pagination {
    position: absolute;
    bottom: 0;
    padding: 5px;
    text-align: right;
    z-index: 10;
    display: flex;
    justify-content: flex-end;
    width: 100%;
    box-sizing: border-box;
  }
  .swiper-pagination-bullet {
    margin: 0 5px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background-color: #fff;
    opacity: 0.4;
    transition: all 0.2s ease;
    &.swiper-pagination-bullet-active {
      opacity: 1;
      width: 8px;
      height: 8px;
    }
  }
}
</style>

The component consists of the following parts:

  1. Template part (<template>): HTML using Swiper Structure, loop through the v-for instruction to render the product carousel image.
  2. JavaScript part (<script>): Implement component initialization and mounting Swiper.
  3. Style part (<style>): Adjust the style of the product carousel component.

6. Use Carousel components in the page

In the Vue project, we can introduce components into the page. In the src/views directory, we create a new GoodsDetail.vue file and use the Carousel component to implement the product carousel. The following is the code of GoodsDetail.vue:

<template>
  <div class="goods-detail">
    <carousel :dataList="goodsDetail.imgUrls" :options="{ autoplay: true }"></carousel>
  </div>
</template>

<script>
import Carousel from '@/components/Carousel.vue'
export default {
  name: 'GoodsDetail',
  data() {
    return {
      goodsDetail: {
        imgUrls: [
          'http://img1.qunarzz.com/piao/fusion/1710/e3/db0a91d642a3a002.jpg_640x200_459cc22c.jpg',
          'http://img1.qunarzz.com/piao/fusion/1710/1e/28417fbe5d5cd902.jpg_640x200_8e969821.jpg',
          'http://img1.qunarzz.com/piao/fusion/1710/4a/547f73542a4f2602.jpg_640x200_ee204ab1.jpg'
        ]
      }
    }
  },
  components: {
    Carousel
  }
}
</script>

<style lang="scss" scoped>
.goods-detail {
  .swiper-container {
    margin: 10px;
  }
}
</style>

Here, we introduce the Carousel component and pass the product carousel chart data and parameters to it.

At this point, Vue has completed the code for setting up product carousel images. Now, we can see the product carousel on the GoodsDetail page.

Summary

This article introduces how to use Vue to set up a product carousel chart. Among them, we used the Swiper library as the main implementation tool and split the functional modules into individual components to improve the maintainability and readability of the code. I believe that through the introduction of this article, readers can better develop and maintain Vue projects.

The above is the detailed content of How to use Vue to set the product carousel effect. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn