效果图
结构
<template>
<div>
<h3>获取验证码倒计时怎么做?</h3>
<div class="phone">
<input type="text" />
<span @click="getCode" :style="{ color: isCountDown ? 'red' : '#000' }">
{{ codeText }}
</span>
</div>
</div>
</template>
逻辑
<script>
export default {
data () {
return {
count: 10, // 总时长,
isCountDown: false, // 是否在倒计时
codeText: '获取验证码',
timer: -1
}
},
methods: {
getCode () {
// 正常倒计时 , 不往下执行
if (this.isCountDown) return
// 开始倒计时
this.isCountDown = true
this.timer = setInterval(() => {
this.codeText = `${this.count--}秒后获取`
// 定时器 , 临界点停止
if (this.count === 0) {
clearInterval(this.timer)
this.count = 10
this.codeText = '获取验证码'
this.isCountDown = false
}
}, 1000)
}
}
}
</script>
样式
<style>
.phone {
padding: 0 15px;
display: flex;
justify-content: space-between;
}
span {
display: inline-block;
border: 1px solid rebeccapurple;
padding: 8px;
border-radius: 8px;
}
</style>