vue-countdown
vue-countdown copied to clipboard
a cool && nice countdown timer component (canvas used) for vue2.x / 基于vue2.x的canvas时钟倒计时组件
vue-countdown

a cool && nice countdown timer component (canvas used) for vue2.x
vue + canvas实现炫酷时钟倒计时效果的vue插件。移动端友好。
show result 效果展示
效果图gif展示
运动过程的几个状态截图展示




动画步骤分析:假如设定倒计时总时间为15s, 变黄色时机为10s,变红色时机为5s。
- 开始倒计时后颜色为绿色。绿色含义是:倒计时的时间离结束时间还很长。
- 10s后变黄色。黄色的含义是:倒计时的时间离结束时间挺近了,第一次加速,起警告作用。动画中,出现快速旋转的扇形。
- 5s后变红色。红色的含义是:倒计时的时间马上就要结束了,第二次加速,起强烈警告作用。动画中,快速旋转的扇形速度加快。
- 0s倒计时结束。动画消失。静态圆形框中显示提示文字。
Installation
npm 下载
npm install vue-canvas-countdown --save
import 引入
es6
import countDown from 'vue-canvas-countdown'
commonjs
const countDown = require('vue-canvas-countdown')
Usage 使用方法
<template>
<div id="app" @click="fireCD">
<div class="demo">
<countDown
ref="countDown"
:fire="fire"
time="15"
:tiping="tiping"
:tipend="tipend"
@onStatusChange="onStatusChange"
@onEnd="onEnd"/>
</div>
</div>
</template>
<script>
import countDown from 'vue-canvas-countdown'
export default {
name: 'App',
components: {
countDown
},
data () {
return {
fire: 0,
tiping: {
text: '倒计时进行中',
color: '#fff'
},
tipend: {
text: '倒计时结束',
color: '#fff'
}
}
},
methods: {
fireCD () {
// 配置参数(更多配置如下表)
this.tiping = {
text: '请下注',
color: '#fff'
}
this.tipend = {
text: '停止下注',
color: '#fff'
}
// 启动倒计时(效果如上图所示)
// 也支持:this.$refs.countDown.startCd()方式 启动倒计时
this.fire++
},
onStatusChange (payload) {
console.log('倒计时状态改变:', payload)
},
onEnd () {
console.log('倒计时结束的回调函数')
}
},
mounted () {
// 启动倒计时
this.fireCD()
}
}
</script>
Props 参数
属性 | 可选 | 类型 | 单位 | 默认值 | 备注 |
---|---|---|---|---|---|
fire: | 必选 | [Number] | - | 200 | 在父组件this.fire++ 即可启动倒计时(也支持:ref组件引用调用startCd方法启动倒计时) |
width,height: | 可选 | [Number] | px | 200 200 | 设置宽高 |
bgCir: | 可选 | [String] | - | rgba(0, 0, 0, .6) | 倒计时圆盘背景颜色 |
time: | 可选 | [Number] | 秒/s | 15 | 倒计时所用 |
statusChange: | 可选 | [Array] | 毫秒/ms | [10000, 500] | 倒计时状态改变的时机/时间点(绿=>黄=>红) |
tiping: | 可选 | [Object] | - | {text: '倒计时', color: '#fff'} | 倒计时进行时的静态文本内容和颜色(注意:color和text都得设置) |
tipend: | 可选 | [Object] | - | {text: 'END', color: '#fff'} | 倒计时结束时的静态文本内容和颜色(注意:color和text都得设置) |
Method 事件
事件名 | 方法说明 | 参数说明 |
---|---|---|
onStatusChange: | 倒计时状态的变化:从开启->第一次加快->第二次加快->结束 (使用场景:例如给倒计时在不同状态添加音效) |
0倒计时未启动/结束, 1开始倒计时, 2倒计时第一次加快, 3倒计时第二次加快 |
onEnd: | 倒计时结束 | 等价于 onStatusChange事件0的状态 |
Describe 说明
- welcome your issue and PR
- 也欢迎fork源码,改造成你想要的模样。在源码中倒计时组件的路径是:
vue-countdown/src/components/countDown.vue
。 - 如果有帮助,小星星走起~~