跳转到内容

倒计时 countdown

数据展示组件。三层同源:无头内核给出解剖与状态机,Vue 组件与自定义元素只是它的两层外壳,行为完全一致。

示例

基础用法

给一个剩余毫秒就开始往下走,缺省模板是 HH:mm:ss;走到 0 就停住不再往下

距离结束:01:00:00

本次答题剩余:00:02:00

模板与精度

format 里 H 时 m 分 s 秒 S 毫秒,重复字母的个数即最少位数;precision 决定读到的数有多细

中文单位:1 时 2 分 3 秒

只看分秒:02:03

写了 SSS 但精度是秒:03.000

精度提到毫秒:03.456

自己排版每一段

默认插槽给出拆好的时、分、秒、毫秒,想把每段装进独立的格子就自己写

010203

暂停、继续与到点

active 翻假即停在当前剩余量,翻真从那里接着走;改 value 就是重新计时,到点派一次 finish

5.0

产物

自定义元素<xh-countdown>
Vue 组件XhCountdown
状态机countdownMachine
皮肤@xihan-ui/styles/countdown.css

解剖

部件名即 data-part 属性值,也是皮肤的选择器。加粗的是必备部件,不渲染它组件不工作(Web Components 适配器会在诊断通道上报 wc.missing-part)。

data-scope="countdown"root

Props

属性类型必填说明
valuenumber剩余毫秒,缺省 0。改写它即把剩余量落到新值并从那里重新计时。
formatstring模板,缺省 HH:mm:ss。H 时、m 分、s 秒、S 毫秒,重复字母的个数即最少位数。
activeboolean是否在走,缺省 true。翻假即停在当前剩余量,翻真从那里接着走。
precisionnumber取值粒度:0 到秒、1 到十分之一秒、2 到百分之一秒、3 到毫秒。缺省 0。
liveCountdownLive读屏播报档位,缺省 off。
onFinish(details: CountdownFinishDetails) => void走到 0 时通知一次。中途被停掉不通知。

状态机

状态idle · running

事件RUN.START · RUN.STOP · RUN.SYNC · FRAME

判据isSettled · isActive

connect API

connect 产出的对象。getXxxProps() 铺到对应部件的宿主元素上,其余是可读状态与操作入口。

成员类型说明
phaseCountdownPhase
valuenumber按精度量化后的剩余毫秒,也是拆分与铺字的输入。
textstring按模板铺好的文本,也就是根里该显示的字。
partsCountdownParts拆开的时、分、秒、毫秒,给要自己排版每一段的作者用。
runningboolean是否还在走。
finishedboolean剩余量是否已经归零。
getRootProps() => T['element']

键盘

规格出处:W3C APG

无键盘交互(不接收焦点,或焦点行为完全由原生元素提供)。

Released under The MIT License