vue-倒计时组件-可自定义样式

本文介绍如何在Vue中创建一个可高度定制样式的倒计时组件,允许开发者根据需求自由调整显示样式,适用于多种应用场景。
摘要由CSDN通过智能技术生成
<template>
  <div>
    <span>{{ hourString.substring(0, 1) }}</span>
    <span>{{ hourString.substring(1, 2) }}</span>
    <span>:</span>
    <span>{{ minuteString.substring(0, 1) }}</span>
    <span>{{ minuteString.substring(1, 2) }}</span>
    <span>:</span>
    <span>{{ secondString.substring(0, 1) }}</span>
    <span>{{ secondString.substring(1, 2) }}</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      hour: "",
      minute: "",
      second: "",
      promiseTimer: "",
    }
  },
  props: {
    remainTime: Number,
  },
  watch: {
    remainTime: {
      handler() {
        if (this.remainTime > 0) {
          this.hour = Math.floor((this.remainTime / 3600) % 24)
          this.minute = Math.floor((this.remainTime / 60) % 60)
          this.second = Math.floor(this.remainTime % 60)
          this.countDowm()
        }
      },
      deep: true,
    },
  },
  mounted() {
    if (this.remainTime > 0) {
      this.hour = Math.floor((this.remainTime / 3600) % 24)
      this.minute = Math.floor((this.remainTime / 60) % 60)
      this.second = Math.floor(this.remainTime % 60)
      this.countDowm()
    }
  },
  methods: {
    countDowm() {
      var self = this
      clearInterval(this.promiseTimer)
      this.promiseTimer = setInterval(function() {
        if (self.hour === 0) {
          if (self.minute !== 0 && self.second === 0) {
            self.second = 59
            self.minute -= 1
          } else if (self.minute === 0 && self.second === 0) {
            self.second = 0
            self.$emit("countDowmEnd", true)
            clearInterval(self.promiseTimer)
          } else {
            self.second -= 1
          }
        } else {
          if (self.minute !== 0 && self.second === 0) {
            self.second = 59
            self.minute -= 1
          } else if (self.minute === 0 && self.second === 0) {
            self.hour -= 1
            self.minute = 59
            self.second = 59
          } else {
            self.second -= 1
          }
        }
      }, 1000)
    },
    formatNum(num) {
      if (num == 0) {
        num = "0"
      }
      return num < 10 ? "0" + num : "" + num
    },
  },
  computed: {
    hourString() {
      return this.formatNum(this.hour)
    },
    minuteString() {
      return this.formatNum(this.minute)
    },
    secondString() {
      return this.formatNum(this.second)
    },
  },
}
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Vue.js来创建一个倒计时的时分秒组件。下面是一个简单的示例: ```html <template> <div> <div>{{ displayTime }}</div> </div> </template> <script> export default { data() { return { countdownTime: 3600, // 倒计时时间,单位为秒 displayTime: "" // 格式化后的显示时间 }; }, mounted() { this.startCountdown(); }, methods: { startCountdown() { this.updateDisplayTime(); setInterval(() => { if (this.countdownTime > 0) { this.countdownTime--; this.updateDisplayTime(); } }, 1000); }, updateDisplayTime() { const hours = Math.floor(this.countdownTime / 3600); const minutes = Math.floor((this.countdownTime % 3600) / 60); const seconds = this.countdownTime % 60; this.displayTime = `${this.formatTime(hours)}:${this.formatTime( minutes )}:${this.formatTime(seconds)}`; }, formatTime(time) { return time.toString().padStart(2, "0"); } } }; </script> ``` 在这个示例中,我们创建了一个Vue组件,用于显示倒计时的时分秒。首先,在`data`中定义了`countdownTime`(倒计时时间,单位为秒)和`displayTime`(格式化后的显示时间)两个变量。在组件被挂载后,我们调用`startCountdown`方法来开始倒计时。 `startCountdown`方法使用`setInterval`定时器来每秒更新倒计时时间,并调用`updateDisplayTime`方法来更新显示时间。在`updateDisplayTime`方法中,我们使用`Math.floor`和模运算来计算小时、分钟和秒数,并调用`formatTime`方法将时间格式化为两位数的字符串。 最后,在模板中使用插值绑定将`displayTime`显示出来。 你可以根据需要自定义样式和功能,这只是一个非常简单的示例。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值