Vue3项目关于轮播图的封装应该怎么封装才是最简单的呢

在Vue3中,可以使用组合API和ref来封装一个简单的轮播图组件。以下是一个基本的封装示例:

<template>
  <div class="carousel">
    <div v-for="item in items" :key="item.id" :style="{ backgroundImage: `url(${item.imageUrl})` }" :class="{ active: item.id === currentIndex }"></div>
  </div>
</template>

<script>
import { ref, onMounted, onUnmounted } from 'vue'

export default {
  props: {
    dataList: {
      type: Array,
      default: () => []
    },
    interval: {
      type: Number,
      default: 3000
    }
  },
  setup(props) {
    const currentIndex = ref(0)
    let timer = null

    const items = props.dataList.map((item, index) => ({
      ...item,
      id: index
    }))

    const stop = () => {
      clearInterval(timer)
      timer = null
    }

    const start = () => {
      timer = setInterval(() => {
        currentIndex.value = (currentIndex.value + 1) % items.length
      }, props.interval)
    }

    onMounted(() => {
      start()
    })

    onUnmounted(() => {
      stop()
    })

    return {
      items,
      currentIndex
    }
  }
}
</script>

<style>
.carousel {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.carousel > div {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center center;
  opacity: 0;
  transition: opacity 0.5s ease-in-out;
}

.carousel > div.active {
  opacity: 1;
}
</style>

在模板中,使用v-for来遍历数据列表,并根据currentIndex来设置当前展示的轮播图。

在setup中,使用ref来定义currentIndex和timer变量。在onMounted和onUnmounted钩子中,分别启动和停止轮播循环。

最后在样式中,定义基本的轮播图样式。文章来源地址https://uudwc.com/A/AA3xw

原文地址:https://blog.csdn.net/qq_70036866/article/details/133165142

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月23日 17:56
人工智能机器学习-飞桨神经网络与深度学习
下一篇 2023年09月23日 17:57