【Vue】手写一个轮播图组件

先上效果图

f49f0d25-6577-46ae-99c3-c544128334f6.gif

完整代码

<script setup lang="ts">
import {
     ref, defineProps} from "vue";
// 定义组件属性
const props = defineProps({
     
  list: {
      // 要轮播的图片的数组
    type: Array as () => Array<Object>,
    required: true,
    default: () => {
     
      return []
    }
  }
})
// 当前显示的图片在list数组中的下标
let active = ref<number>(1)
// 定时器
let timer: any = null;
// 开始轮播
const startCarousel = (): void => {
     
  if (timer) return
  timer = setInterval(() => {
     
    if (active.value >= props.list.length) {
     
      active.value = 1
      return
    }
    active.value++
  }, 1000)
}
// 停止轮播
const stopCarousel = (): void => {
     
  clearInterval(timer)
  timer = null
}
// 上一张
const pre = (): void => {
     
  if (active.value === 1) {
     
    active.value = props.list.length
    return
  }
  active.value--
}
// 下一张
const next = (): void => {
     
  if(active.value === props.list.length){
     
    active.value = 1
    return
  }
  active.value++
}
startCarousel()
</script>

<template>
  
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值