当前位置:首页 > VUE

vue实现活动倒计时

2026-02-09 19:29:25VUE

使用计算属性实现倒计时

在Vue组件中定义活动结束时间,通过计算属性实时计算剩余时间

data() {
  return {
    endTime: new Date('2023-12-31 23:59:59').getTime()
  }
},
computed: {
  countdown() {
    const now = new Date().getTime()
    const distance = this.endTime - now

    const days = Math.floor(distance / (1000 * 60 * 60 * 24))
    const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
    const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))
    const seconds = Math.floor((distance % (1000 * 60)) / 1000)

    return {
      days,
      hours,
      minutes,
      seconds,
      expired: distance < 0
    }
  }
}

使用定时器自动更新

在mounted生命周期中设置定时器,每秒更新一次倒计时

mounted() {
  this.timer = setInterval(() => {
    this.$forceUpdate()
  }, 1000)
},
beforeDestroy() {
  clearInterval(this.timer)
}

模板显示倒计时

在模板中显示格式化后的倒计时,并处理已过期情况

vue实现活动倒计时

<template>
  <div v-if="!countdown.expired">
    剩余时间: {{countdown.days}}天 {{countdown.hours}}小时 
    {{countdown.minutes}}分 {{countdown.seconds}}秒
  </div>
  <div v-else>
    活动已结束
  </div>
</template>

使用第三方库day.js优化

安装day.js处理时间格式更便捷

npm install dayjs

在组件中使用day.js

vue实现活动倒计时

import dayjs from 'dayjs'

computed: {
  formattedTime() {
    return dayjs(this.endTime).format('YYYY-MM-DD HH:mm:ss')
  }
}

响应式设计考虑

添加CSS样式使倒计时更美观

.countdown {
  font-size: 1.5rem;
  color: #ff4757;
  font-weight: bold;
  text-align: center;
  padding: 20px;
  background: #f1f2f6;
  border-radius: 8px;
}

移动端适配

添加viewport meta标签确保移动端正常显示

<meta name="viewport" content="width=device-width, initial-scale=1.0">

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

相关文章

vue实现倒计时抢券

vue实现倒计时抢券

Vue 实现倒计时抢券功能 核心逻辑 倒计时抢券功能需要结合时间计算、状态管理和界面交互。通过 Vue 的响应式特性和生命周期钩子,可以高效实现这一需求。 实现步骤 1. 数据准备 在 Vue 组件…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

lua 实现vue

lua 实现vue

在 Lua 中实现类似 Vue 的响应式框架需要模拟 Vue 的核心功能,包括数据绑定、模板渲染和依赖追踪。以下是实现的关键思路和代码示例: 响应式数据绑定 使用 Lua 的 __index 和 _…

vue实现列表

vue实现列表

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

前端vue实现概率

前端vue实现概率

Vue实现概率功能的方法 在Vue中实现概率功能通常涉及随机数生成和概率计算。以下是几种常见实现方式: 基础概率实现 使用Math.random()生成0到1之间的随机数,与设定概率比较:…

vue实现点击下载

vue实现点击下载

使用 <a> 标签实现下载 在 Vue 中可以通过动态生成 <a> 标签实现文件下载。适用于已知文件 URL 的场景。 <template> <butt…