vue 实现倒计时功能

Posted 水星记_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 实现倒计时功能相关的知识,希望对你有一定的参考价值。

实现效果

在这里插入图片描述

html部分代码

<div class="biggestBox">
      <div><input type="text" /></div>
      <div v-if="isShow" :style="{background: msg == '' ? 'cornflowerblue' : '' }" @click="verification">获取验证码</div>
      <div v-if="!isShow"><span>{{count}}</span></div>
</div>

data部分代码

data() {
    return {
      isShow: true, //通过 v-show 控制显示'获取按钮'还是'倒计时'
      count: 0, //倒计时 计数器
      msg: "", //如果msg为空是蓝色,点击之后变灰色
    };
  },

methods部分代码

  methods: {
    //点击事件
    verification() {
      this.isShow = false;//倒计时
      this.count = 3; //赋值3秒
      var times = setInterval(() => {
        this.count--; //递减
        if (this.count <= 0) {
          // <=0 变成获取按钮
          this.isShow = true;
          clearInterval(times);
        }
      }, 1000); //1000毫秒后执行
    },
  },

css部分代码

<style scoped>
/* 最大的盒子 */
.biggestBox {
  display: flex;
  align-items: center;
  padding: 20px;
}
/* input输入框 */
.biggestBox div:first-child input {
  height: 24px;
  border: none;
  border-radius: 2px;
  border: 1px solid rgb(185, 185, 185);
}
/* 获取验证码按钮 */
.biggestBox div:nth-child(2) {
  width: 64px;
  text-align: center;
  margin-left: 10px;
  background-color: rgb(172, 172, 172);
  color: white;
  padding: 6px;
  border-radius: 4px;
  font-size: 12px;
}
</style>

完整代码

<template>
  <div>
    <div class="biggestBox">
      <div><input type="text" /></div>
      <div v-if="isShow" :style="{background: msg == '' ? 'cornflowerblue' : '' }" @click="verification">获取验证码</div>
      <div v-if="!isShow"><span>{{count}}</span></div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isShow: true, //通过 v-show 控制显示'获取按钮'还是'倒计时'
      count: 0, //倒计时 计数器
      msg: "", //如果msg为空是蓝色,点击之后变灰色
    };
  },
  methods: {
    verification() {
      this.isShow = false;
      this.count = 3; //赋值3秒
      var times = setInterval(() => {
        this.count--; //递减
        if (this.count <= 0) {
          // <=0 变成获取按钮
          this.isShow = true;
          clearInterval(times);
        }
      }, 1000); //1000毫秒后执行
    },
  },
};
</script>

<style scoped>
/* 最大的盒子 */
.biggestBox {
  display: flex;
  align-items: center;
  padding: 20px;
}
/* input输入框 */
.biggestBox div:first-child input {
  height: 24px;
  border: none;
  border-radius: 2px;
  border: 1px solid rgb(185, 185, 185);
}
/* 获取验证码按钮 */
.biggestBox div:nth-child(2) {
  width: 64px;
  text-align: center;
  margin-left: 10px;
  background-color: rgb(172, 172, 172);
  color: white;
  padding: 6px;
  border-radius: 4px;
  font-size: 12px;
}
</style>

以上是关于vue 实现倒计时功能的主要内容,如果未能解决你的问题,请参考以下文章

vue.js实现页面倒计时跳转功能

vue2.0 代码功能片段

使用带有渲染功能的 Vue.js 3 片段

手把手带你分解 Vue 倒计时组件

vue实现数据遍历多个倒计时列表

python使用上下文对代码片段进行计时,非装饰器