Vue 小组件倒计时功能实现

本文介绍了一个用于显示倒计时的Vue组件实现方法。该组件可根据提供的结束时间自动计算并展示剩余时间,包括天数、小时、分钟及秒数,并在倒计时结束后触发相应事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**
@author Celeste
@date 2021/4/17
@description 用于结束还剩多少时间
**

<template>
   <div>
    <h1 :style="timeStyle">结束还剩 </h1>
    <span :style="timeStyle">{{ time }}</span>
  </div>
</template>

<script>
export default {
props :{
    // 结束时间
    endTime:{
        type:String,
        default:''
    }
},
data () {
      return {
        time : '',
        flag : false,
        timeStyle: {
        display: 'block',
        'text-align': 'center'
      },
      }
    },
    mounted () {
          //定时更新当前时间
      let time = setInterval(()=>{
        if(this.flag == true){
          clearInterval(time)
        }
        this.timeDown()
      })
    },
    methods : {
            // 计算剩余时间
      timeDown () {
        const endTime = new Date(this.endTime)
        const nowTime = new Date();
    
        let leftTime = parseInt((endTime.getTime()-nowTime.getTime())/1000)
        let d = parseInt(leftTime/(24*60*60))
        let h = this.formate(parseInt(leftTime/(60*60)%24))
        let m = this.formate(parseInt(leftTime/60%60))
        let s = this.formate(parseInt(leftTime%60))
        if(leftTime <= 0){
          this.flag = true
      this.timeStyle.display = 'none'
          this.$emit('time-end')
          
        }
        this.time = `${d}天${h}小时${m}分${s}`     // 需要修改时间样式的话 ,比如需要什么30分钟倒计时,就只保留分和秒
      },
      formate (time) {
        if(time>=10){
          return time
        }else{
          return `0${time}` //数字前补 0
        }
      }
    }
  }



</script>

<style lang="scss" scoped>
h1{
  color: #C20A0A;
}
</style>

ps
:这是一个抽出来的组件,要在别的页面引用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值