当前位置:首页 > 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 样式:

.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实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { --…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

vue grid实现

vue grid实现

Vue Grid 实现方法 在 Vue 中实现网格布局可以通过多种方式完成,包括使用原生 CSS Grid、第三方组件库或自定义组件。以下是几种常见方法: 使用原生 CSS Grid 通过 Vue…

vue核心实现

vue核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现原理的详细说明: 响应式系统 Vue 使用 Object.defineProper…