Skip to content

CountDown 倒计时

用于验证码倒计时、活动倒计时、支付剩余时间和订单超时关闭等场景。

说明

该组件基于 useCountdown Hook 实现,支持精确的挂钟时间校准、毫秒级精度和自定义格式化。

平台差异说明

App(vue)App(nvue)H5小程序

基本使用

  • 通过 time 设置倒计时时长(毫秒)。
  • 默认自动开始倒计时。
html
<see-count-down :time="60000" />

自定义格式

  • 通过 format 自定义显示格式。
  • 支持的占位符:DD(天)、HH/hh(时)、mm(分)、ss(秒)、SSS(毫秒)。
html
<!-- 仅显示分秒 -->
<see-count-down :time="120000" format="mm:ss" />

<!-- 显示天数 -->
<see-count-down :time="86400000" format="DD天HH时mm分ss秒" />

分隔符

  • 通过 separator 自定义分隔符,默认为 :
  • 仅在未设置 format 时生效。
html
<see-count-down :time="60000" separator="-" />
<see-count-down :time="60000" separator=" " />

显示天数

  • 通过 showDays 设置是否显示天数,默认为 false
html
<see-count-down :time="172800000" showDays />

毫秒级精度

  • 通过 millisecond 开启毫秒级精度显示。
html
<see-count-down :time="10000" millisecond />

手动控制

  • 设置 autoStartfalse 关闭自动开始。
  • 通过组件实例调用 start()pause()reset() 方法手动控制。
vue
<see-count-down ref="countdownRef" :time="60000" :autoStart="false" />
<button @tap="countdownRef?.start()">开始</button>
<button @tap="countdownRef?.pause()">暂停</button>
<button @tap="countdownRef?.reset()">重置</button>

<script lang="ts" setup>
import { ref } from 'vue'
const countdownRef = ref()
</script>
vue
<see-count-down ref="countdownRef" :time="60000" :autoStart="false" />
<button @tap="$refs.countdownRef.start()">开始</button>
<button @tap="$refs.countdownRef.pause()">暂停</button>
<button @tap="$refs.countdownRef.reset()">重置</button>

<script>
export default {
  data() {
    return {}
  }
}
</script>

服务端时间

  • 通过 serverTime 传入服务端当前时间戳,配合 endTime 使用,可实现跨客户端的精确倒计时。
html
<see-count-down :serverTime="1700000000000" :endTime="1700003600000" />

插槽用法

  • 默认插槽暴露当前时间数据,可用于自定义渲染。
html
<see-count-down :time="60000">
  <template #default="{ minutes, seconds }">
    <text>{{ minutes }}分{{ seconds }}秒</text>
  </template>
</see-count-down>

自定义样式

  • 通过 textColor 设置文字颜色。
  • 通过 fontSize 设置字体大小。
  • 通过 block 设置是否为块级显示。
html
<see-count-down :time="60000" textColor="#ff0000" fontSize="32rpx" />
<see-count-down :time="60000" block />

API

Props

参数名说明类型默认值可选值平台差异
time倒计时时长(毫秒)Number0任意非负整数-
format自定义显示格式String''(自动:HH:mm:ssDD:HH:mm:ssDD/HH/mm/ss/SSS 的字符串-
autoStart是否自动开始倒计时Booleantruetruefalse-
millisecond是否开启毫秒级精度Booleanfalsetruefalse-
interval倒计时间隔(毫秒)Number0(自动:毫秒模式 16ms,普通模式 1000ms)任意正整数-
serverTime服务端当前时间戳(毫秒)Numberundefined任意时间戳-
endTime结束时间戳(毫秒)Numberundefined任意时间戳-
separator分隔符String':'任意字符串-
showDays是否显示天数Booleanfalsetruefalse-
zeroPad是否补零Booleantruetruefalse-
textColor文字颜色String'var(--see-text-color, #303133)'任意 CSS 颜色值-
fontSize字体大小String'28rpx'任意 CSS 字体大小值-
block是否为块级显示Booleanfalsetruefalse-

Events

事件名说明回调参数平台差异
onChange倒计时每次变化时触发timeData: { days, hours, minutes, seconds, milliseconds, total }-
onFinish倒计时结束时触发-
onStart倒计时开始时触发-
onPause倒计时暂停时触发-
onReset倒计时重置时触发-

Slots

插槽名说明作用域数据
default自定义显示内容{ days, hours, minutes, seconds, milliseconds, total, formatted }

Methods

通过 ref 获取组件实例后调用。

方法名说明参数
start开始倒计时
pause暂停倒计时
reset重置倒计时time?: number 可选,重置到指定时长
finish立即结束倒计时

辽 ICP 备 2025070134 号