Skip to content

CountDown 倒计时

介绍

用于实时展示倒计时数值,支持天/时/分/秒显示、中英文分割符、边框样式、自定义颜色等,并提供控制器用于手动控制倒计时的开始、暂停和重置。

引入

typescript
import { TnCountDown, TnCountDownController } from "@tuniao/tn-ui";

代码演示

基础用法

通过 time 属性设置倒计时总时长,单位为。默认显示 时:分:秒 格式,自动开始倒计时。

基础用法

点我查看代码
typescript
TnCountDown({ time: 300 });

显示天数

通过 showDay 属性开启天数显示。当时间不足一天时默认自动隐藏天数(autoHideDay 控制)。

显示天数

点我查看代码
typescript
// 1天零1小时
TnCountDown({ time: 90100, showDay: true });

只显示分秒

通过 showHour 属性控制小时的显示,设为 false 时仅显示分和秒。

只显示分秒

点我查看代码
typescript
// 10分钟,只显示分:秒
TnCountDown({ time: 600, showHour: false });

中文分割符

通过 separatorMode 属性切换分割符模式,'cn' 为中文(天/时/分/秒),'en' 为英文冒号。

中文分割符

点我查看代码
typescript
// 中文分割符
TnCountDown({ time: 500, separatorMode: 'cn' });

// 中文分割符 + 显示天数
TnCountDown({ time: 86500, separatorMode: 'cn', showDay: true });

自定义颜色

通过 textColorseparatorColor 属性分别设置数字和分割符的颜色。支持主题色名称(如 "primary""danger")和自定义色值(如 "#01beff")。

自定义颜色

点我查看代码
typescript
// 主题色 - primary
TnCountDown({
  time: 3700,
  textColor: "primary",
  separatorColor: "primary",
});

// 主题色 - danger
TnCountDown({
  time: 3700,
  textColor: "danger",
  separatorColor: "danger",
});

// 自定义 hex 色值
TnCountDown({
  time: 3700,
  textColor: "#01beff",
  separatorColor: "#01beff",
});

显示边框

通过 showBorder 属性为每个时间数字添加边框。可通过 itemBorderColor 自定义边框颜色。

显示边框

点我查看代码
typescript
// 英文分割符 + 边框
TnCountDown({ time: 450, showBorder: true });

// 中文分割符 + 边框
TnCountDown({ time: 450, showBorder: true, separatorMode: 'cn' });

// 自定义边框颜色 + 主题色文字
TnCountDown({
  time: 450,
  showBorder: true,
  itemBorderColor: "primary",
  textColor: "primary",
  separatorColor: "primary",
});

自定义字体大小

通过 fontSize 属性设置字体大小,单位为 vp。不设置时使用主题默认字体大小。

自定义字体大小

点我查看代码
typescript
TnCountDown({ time: 360, fontSize: 12 });
TnCountDown({ time: 360, fontSize: 20 });
TnCountDown({ time: 360, fontSize: 28 });

手动控制

通过 controller 属性传入 TnCountDownController 实例,配合 autoStart: false 实现手动控制倒计时的开始、暂停和重置。

手动控制

类型说明

TnCountDownController 控制器方法:

方法名说明参数
start开始倒计时-
pause暂停倒计时-
reset重置倒计时,可传入新的时间(秒)time?: number
点我查看代码
typescript
@ComponentV2
struct CountDownDemo {
  @Local controller: TnCountDownController = new TnCountDownController();
  @Local statusText: string = "未开始";

  build() {
    Column({ space: 12 }) {
      Text(`状态:${this.statusText}`);

      TnCountDown({
        time: 600,
        autoStart: false,
        controller: this.controller,
        textColor: "primary",
        fontSize: 20,
        separatorColor: "primary",
        onStart: () => {
          this.statusText = "倒计时中";
        },
        onEnd: () => {
          this.statusText = "已结束";
        },
      });

      Row({ space: 12 }) {
        TnButton({
          content: "开始",
          btnSize: "sm",
          type: "primary",
          onBtnClick: () => {
            this.controller.start();
            this.statusText = "倒计时中";
          },
        });
        TnButton({
          content: "暂停",
          btnSize: "sm",
          type: "warning",
          onBtnClick: () => {
            this.controller.pause();
            this.statusText = "已暂停";
          },
        });
        TnButton({
          content: "重置",
          btnSize: "sm",
          type: "info",
          onBtnClick: () => {
            this.controller.reset();
            this.statusText = "未开始";
          },
        });
      }
    }
  }
}

API

Props

参数说明类型默认值
time倒计时时长,单位秒number0
autoStart是否自动开始倒计时booleantrue
textColor数字文字颜色,支持主题色名称或自定义色值string-
fontSize字体大小(vp),不设置时使用主题默认值number0
showDay是否显示天数booleanfalse
showHour是否显示小时booleantrue
showMinute是否显示分钟booleantrue
showSecond是否显示秒数booleantrue
autoHideDay时间不足一天时自动隐藏天数booleantrue
separatorMode分割符模式'en' | 'cn''en'
separatorColor分割符颜色,支持主题色名称或自定义色值string-
showBorder是否显示数字边框booleanfalse
itemBorderColor边框颜色,支持主题色名称或自定义色值string-
controller倒计时控制器TnCountDownController-

Events

事件名说明回调参数
onStart倒计时开始时触发-
onEnd倒计时结束时触发-

TnCountDownController 方法

方法名说明参数返回值
start开始倒计时-void
pause暂停倒计时-void
reset重置倒计时time?: number(新的时间,单位秒,不传则使用初始值)void