当前位置:首页 > VUE

vue实现倒计时功能

2026-02-25 14:22:11VUE

Vue 倒计时功能实现方法

使用 setInterval 基础实现

在 Vue 组件中,通过 data 定义倒计时初始值,使用 setInterval 每秒更新剩余时间。

vue实现倒计时功能

<template>
  <div>{{ countdown }}</div>
</template>

<script>
export default {
  data() {
    return {
      countdown: 60,
      timer: null
    }
  },
  mounted() {
    this.startCountdown()
  },
  methods: {
    startCountdown() {
      this.timer = setInterval(() => {
        if (this.countdown > 0) {
          this.countdown--
        } else {
          clearInterval(this.timer)
        }
      }, 1000)
    }
  },
  beforeDestroy() {
    clearInterval(this.timer)
  }
}
</script>

使用计算属性显示格式化时间

将秒数转换为 分钟:秒 的格式,提升可读性。

vue实现倒计时功能

<template>
  <div>{{ formattedTime }}</div>
</template>

<script>
export default {
  computed: {
    formattedTime() {
      const minutes = Math.floor(this.countdown / 60)
      const seconds = this.countdown % 60
      return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`
    }
  }
  // 其余代码与基础实现相同
}
</script>

使用 Vue 自定义指令封装

创建可复用的倒计时指令,适用于多个场景。

// 全局注册指令
Vue.directive('countdown', {
  bind(el, binding) {
    let count = binding.value || 60
    const timer = setInterval(() => {
      el.textContent = count
      if (count-- <= 0) {
        clearInterval(timer)
        el.textContent = "时间到"
      }
    }, 1000)
    el._countdownTimer = timer
  },
  unbind(el) {
    clearInterval(el._countdownTimer)
  }
})

// 使用方式
<div v-countdown="30"></div>

使用第三方库(如 moment.js

处理更复杂的时间格式和时区问题。

import moment from 'moment'

methods: {
  startCountdown() {
    this.endTime = moment().add(60, 'seconds')
    this.timer = setInterval(() => {
      const diff = this.endTime.diff(moment(), 'seconds')
      this.countdown = diff > 0 ? diff : 0
      if (diff <= 0) clearInterval(this.timer)
    }, 1000)
  }
}

注意事项

  1. 组件销毁时务必清除定时器,避免内存泄漏
  2. 对于需要暂停/继续的场景,可扩展为存储剩余时间到 data
  3. 服务端渲染(SSR)场景需注意 setInterval 在服务端的兼容性
  4. 高精度需求可使用 requestAnimationFrame 替代 setInterval

标签: 倒计时功能
分享给朋友:

相关文章

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用。以下是 Vue 功能实现的关键方法和技术。 数据绑定与响应式 Vue 的核心特性是数据绑定和响应式系统。通过…

vue实现收货功能

vue实现收货功能

实现收货功能的基本思路 在Vue中实现收货功能通常涉及前端界面交互、后端API调用以及状态管理。以下是关键步骤和代码示例: 页面布局与数据绑定 使用Vue的模板语法构建收货表单,包含收货人、联系方式…

vue实现拨号功能

vue实现拨号功能

Vue 实现拨号功能 使用 tel: 协议实现基础拨号 在 Vue 中可以通过 HTML 的 <a> 标签结合 tel: 协议实现拨号功能。这种方式适用于移动端浏览器,点击后会直接调用系统…

vue实现付费功能

vue实现付费功能

Vue 实现付费功能的方法 集成第三方支付平台 选择适合的第三方支付平台(如支付宝、微信支付、Stripe、PayPal等),并按照其文档进行集成。在 Vue 项目中,可以通过引入支付平台的 SDK…

vue实现粘贴功能

vue实现粘贴功能

实现粘贴功能的基本方法 在Vue中实现粘贴功能通常涉及监听paste事件,并处理剪贴板数据。以下是一个基础实现示例: <template> <div @paste="hand…