当前位置:首页 > VUE

vue实现倒计时

2026-02-25 14:11:53VUE

Vue 实现倒计时的常见方法

使用 setInterval 实现基础倒计时

在 Vue 组件的 data 中定义倒计时相关变量:

data() {
  return {
    countdown: 60, // 初始倒计时秒数
    timer: null   // 存储定时器
  }
}

在方法中启动倒计时:

methods: {
  startCountdown() {
    this.timer = setInterval(() => {
      if (this.countdown > 0) {
        this.countdown--
      } else {
        clearInterval(this.timer)
      }
    }, 1000)
  }
}

在模板中显示倒计时:

<template>
  <button @click="startCountdown" :disabled="countdown !== 60">
    {{ countdown === 60 ? '获取验证码' : `${countdown}秒后重试` }}
  </button>
</template>

使用 computed 计算格式化时间

对于需要显示分钟和秒的倒计时:

computed: {
  formattedTime() {
    const minutes = Math.floor(this.countdown / 60)
    const seconds = this.countdown % 60
    return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`
  }
}

使用 Vue 生命周期管理定时器

在组件销毁时清除定时器:

beforeDestroy() {
  clearInterval(this.timer)
}

使用第三方库实现更复杂倒计时

安装 vue-countdown 插件:

npm install vue-countdown

在组件中使用:

import VueCountdown from '@xkeshi/vue-countdown'

export default {
  components: {
    VueCountdown
  }
}

模板中使用:

<vue-countdown 
  :time="60 * 1000" 
  v-slot="{ minutes, seconds }">
  剩余时间:{{ minutes }}分{{ seconds }}秒
</vue-countdown>

使用 Date 对象实现精确倒计时

避免 setInterval 的误差:

methods: {
  preciseCountdown(endTime) {
    const now = new Date().getTime()
    const distance = endTime - now

    if (distance <= 0) {
      return clearInterval(this.timer)
    }

    this.countdown = Math.floor(distance / 1000)
  }
}

使用 CSS 动画增强视觉效果

为倒计时添加动画效果:

<transition name="fade">
  <span v-show="countdown > 0" class="countdown-text">
    {{ countdown }}
  </span>
</transition>

CSS 样式:

vue实现倒计时

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
.countdown-text {
  font-size: 24px;
  color: #ff5722;
}

标签: 倒计时vue
分享给朋友:

相关文章

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…

vue实现答题

vue实现答题

Vue 实现答题功能 数据结构设计 使用 Vue 的响应式特性管理题目和答案数据。通常需要以下数据结构: data() { return { questions: [ {…

vue实现列表

vue实现列表

Vue 实现列表的方法 在 Vue 中实现列表渲染通常使用 v-for 指令,可以动态生成多个元素。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 遍历数组,生成列表项。v-for 需要…

vue实现tab

vue实现tab

Vue 实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-if 和 v-show 指令 通过绑定 v-if 或 v-show 来…

vue实现销售程序

vue实现销售程序

Vue实现销售程序的基本步骤 搭建Vue项目基础结构 使用Vue CLI或Vite初始化项目,安装必要依赖(如Vue Router、Vuex/Pinia、Element UI/Ant Design V…