Skip to content

CountDown 倒计时

用于实时展示倒计时数值,支持毫秒精度。

引入

通过 easycom 自动引入,无需手动注册。

代码演示

基础用法

通过 time 属性设置倒计时总时长,单位为毫秒。

html
<zq-count-down :time="30 * 60 * 60 * 1000" />

自定义格式

通过 format 属性设置时间格式。

html
<!-- 默认格式 HH:mm:ss -->
<zq-count-down :time="30 * 60 * 1000" />

<!-- 包含天数 -->
<zq-count-down :time="2 * 24 * 60 * 60 * 1000" format="DD 天 HH 时 mm 分 ss 秒" />

<!-- 仅显示分秒 -->
<zq-count-down :time="5 * 60 * 1000" format="mm:ss" />

支持的格式化占位符:

占位符说明
DD天数(两位补零)
HH小时(两位补零)
mm分钟(两位补零)
ss秒数(两位补零)
SSS毫秒(三位补零)

毫秒级渲染

通过 millisecond 属性开启毫秒级渲染。

html
<zq-count-down :time="30 * 60 * 1000" format="HH:mm:ss:SSS" millisecond />

手动控制

通过 ref 获取组件实例,调用 startstopreset 方法手动控制。

html
<zq-count-down ref="countDownRef" :time="60000" :auto-start="false" />
<zq-button text="开始" @click="countDownRef.start()" />
<zq-button text="暂停" @click="countDownRef.stop()" />
<zq-button text="重置" @click="countDownRef.reset()" />
js
const countDownRef = ref(null)

自定义样式

通过作用域插槽自定义倒计时样式。

html
<zq-count-down :time="30 * 60 * 1000">
  <template #default="{ time }">
    <text class="block">{{ String(time.hours).padStart(2, '0') }}</text>
    <text class="colon">:</text>
    <text class="block">{{ String(time.minutes).padStart(2, '0') }}</text>
    <text class="colon">:</text>
    <text class="block">{{ String(time.seconds).padStart(2, '0') }}</text>
  </template>
</zq-count-down>

监听事件

html
<zq-count-down :time="5000" @change="onChange" @finish="onFinish" />
js
function onChange(timeData) {
  console.log('剩余时间:', timeData.total)
}

function onFinish() {
  console.log('倒计时结束')
}

API

Props

参数说明类型默认值
time倒计时总时长,单位毫秒number0
format时间格式string'HH:mm:ss'
auto-start是否自动开始倒计时booleantrue
millisecond是否开启毫秒级渲染booleanfalse

Events

事件名说明回调参数
change倒计时变化时触发timeData: TimeData
finish倒计时结束时触发-

TimeData 数据结构

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

Methods

通过 ref 获取组件实例后可调用以下方法:

方法名说明参数
start开始倒计时-
stop暂停倒计时-
reset重置倒计时,若 auto-starttrue,重置后会自动开始-

Slots

名称说明参数
default自定义倒计时内容{ time: TimeData }

注意事项

  • 非毫秒模式下,倒计时间隔为 1000ms;毫秒模式下间隔为 30ms。
  • time 属性变化时会自动重置倒计时。
  • 组件销毁时会自动清除定时器。

主题定制

变量名说明
--color-text-primary默认文字颜色

Released under the MIT License.