CountDown 倒计时

引入

app.jsonindex.json中引入组件,详细介绍见快速上手

  1. "usingComponents": {
  2. "van-count-down": "@vant/weapp/count-down/index"
  3. }

Vant Weapp 1.0 版本开始支持此组件,升级方式参见快速上手

代码演示

基本用法

time属性表示倒计时总时长,单位为毫秒

  1. <van-count-down time="{{ time }}" />
  1. Page({
  2. data: {
  3. time: 30 * 60 * 60 * 1000,
  4. },
  5. });

自定义格式

通过format属性设置倒计时文本的内容

  1. <van-count-down time="{{ time }}" format="DD 天 HH 时 mm 分 ss 秒" />

毫秒级渲染

倒计时默认每秒渲染一次,设置millisecond属性可以开启毫秒级渲染

  1. <van-count-down millisecond time="{{ time }}" format="HH:mm:ss:SSS" />

自定义样式

设置use-slot属性后可以自定义倒计时样式,需要通过bind:change事件获取timeData对象并自行渲染,格式见下方表格

  1. <van-count-down use-slot time="{{ time }}" bind:change="onChange">
  2. <text class="item">{{ timeData.hours }}</text>
  3. <text class="item">{{ timeData.minutes }}</text>
  4. <text class="item">{{ timeData.seconds }}</text>
  5. </van-count-down>
  1. Page({
  2. data: {
  3. time: 30 * 60 * 60 * 1000,
  4. timeData: {},
  5. },
  6. onChange(e) {
  7. this.setData({
  8. timeData: e.detail,
  9. });
  10. },
  11. });
  1. .item {
  2. display: inline-block;
  3. width: 22px;
  4. margin-right: 5px;
  5. color: #fff;
  6. font-size: 12px;
  7. text-align: center;
  8. background-color: #1989fa;
  9. border-radius: 2px;
  10. }

手动控制

通过 selectComponent 选择器获取到组件实例后,可以调用startpausereset方法

  1. <van-count-down
  2. class="control-count-down"
  3. millisecond
  4. time="{{ 3000 }}"
  5. auto-start="{{ false }}"
  6. format="ss:SSS"
  7. bind:finish="finished"
  8. />
  9. <van-grid clickable column-num="3">
  10. <van-grid-item text="开始" icon="play-circle-o" bindclick="start" />
  11. <van-grid-item text="暂停" icon="pause-circle-o" bindclick="pause" />
  12. <van-grid-item text="重置" icon="replay" bindclick="reset" />
  13. </van-grid>
  1. Page({
  2. start() {
  3. const countDown = this.selectComponent('.control-count-down');
  4. countDown.start();
  5. },
  6. pause() {
  7. const countDown = this.selectComponent('.control-count-down');
  8. countDown.pause();
  9. },
  10. reset() {
  11. const countDown = this.selectComponent('.control-count-down');
  12. countDown.reset();
  13. },
  14. finished() {
  15. Toast('倒计时结束');
  16. },
  17. });

API

Props

参数说明类型默认值版本
time倒计时时长,单位毫秒number--
format时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒stringHH:mm:ss-
auto-start是否自动开始倒计时booleantrue-
millisecond是否开启毫秒级渲染booleanfalse-
use-slot是否使用自定义样式插槽booleanfalse-

Events

事件名说明回调参数
finish倒计时结束时触发-
change时间变化时触发,仅在开启use-slot后才会触发timeData

timeData 格式

名称说明类型
days剩余天数number
hours剩余小时number
minutes剩余分钟number
seconds剩余秒数number
milliseconds剩余毫秒number

方法

通过 selectComponent 可以获取到 CountDown 实例并调用实例方法

方法名参数返回值介绍
start--开始倒计时
pause--暂停倒计时
reset--重设倒计时,若auto-starttrue,重设后会自动开始倒计时

CountDown 倒计时 - 图1