需求就是如上图,我也是看见朋友在做这个需求,所以想着用vue也实现一下
其实这里主要就是用到了定时器
用vue实现的话还是比较简单的
以下是我实现的结果,倒计时结束,点击抢购按钮,弹出开始抢购的alert
实现代码如下
<template>
<div>
<div class="container">
<div class="left">
<span class="title1">杭州市通用5元券</span>
<span>杭味面馆</span>
</div>
<button class="right" :disabled="isTrue" @click="btnCick()">
{{ time }}
</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
time: 10, //倒计时
timer: null, //定时器
isTrue: true, //控制按钮是否可用
}
},
methods: {
daoJiShi() {
this.timer = setTimeout(() => {
this.time = this.time - 1
if (this.time == 0) {
this.time = '开始抢购'
}
}, 1000)
},
btnCick() {
alert('可以开始抢购啦')
},
},
mounted() {
setInterval(() => {
if (this.time == '开始抢购') {
this.isTrue = false
clearInterval(this.timer)
}
this.daoJiShi()
}, 1000)
},
}
</script>
<style lang="scss" scoped>
.container {
height: 136px;
width: 430px;
border-radius: 12px;
background-color: #fff0f1;
display: flex;
justify-content: space-around;
align-items: center;
.left {
display: flex;
flex-direction: column;
align-items: flex-start;
.title1 {
padding-bottom: 5px;
font-size: 24px;
font-weight: bold;
}
}
.right {
width: 108px;
height: 45px;
border-radius: 8px;
font-size: 20px;
background-color: #f00;
color: white;
border: none;
}
}
</style>