Skip to content
方舟组件

活动Event

活动卡(横幅 + 类型 + 标题 + 起止时间,进行中闪红点)与三枚灰块的倒计时。

Vue
实验import { AkEvent, AkCountdown } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

活动卡和倒计时。活动卡从上到下是:21:9 横幅、强调色的类型行、标题、起止时间,时间下面可以放倒计时或按钮。倒计时由三枚灰块组成,每块是一个数字加一个单位;灰块和 .ak-level--badge 是同一种读数,不做成白块,否则看起来像一排按钮,也会压过标题。

活动卡 ​

status="live" 在类型行前加一个闪烁的红点(进行中),status="ended" 让类型行转灰(已结束)。横幅地址由调用方用 cover 传入,按 21:9 裁切铺满;不传时不显示横幅,也可以用 #cover 插槽自己放。倒计时放在默认插槽里。

倒计时 ​

AkCountdown 只需要一个截止时刻 until,剩余时间按当前时间实时算。也可以像 Naive 的 NCountdown 那样给 duration(剩余毫秒),从挂载时开始倒数。active=false 暂停:until 模式下读数停住,恢复后跳回实际剩余;duration 模式下恢复后从停下的地方接着倒数。

读数规则同首页脚本:剩余不足一天时从「时」开始显示(00 时也照常显示),一直显示到 precision(默认到分,sec 到秒)。parts 限制最多显示几格,例如首页幻灯片用 2 格,显示成「03 days 14 hrs」,不足一天时是「14 hrs 27 mins」;数值为 1 时单位用单数(01 day / 01 hr / 01 min)。倒数到 0 时触发 finish,之后整个倒计时不再渲染。

可访问性 ​

  • 倒计时是 role="timer",它隐含 aria-live="off",每分钟刷新时不会打断读屏器。
  • 灰块上的单位是英文(DAYS / HRS / MINS),读屏名另给一份中文「剩余 3 天 14 小时 27 分」,灰块本身对读屏器隐藏。
  • 只刷新到需要的精度:到分时下一次唤醒就排在读数变化的那一刻,不每秒重渲染。

Vue API ​

AkEvent ​

属性类型默认说明
title必填string—活动名
kindstring—标题上方的类型行(Side Story · 进行中 / 寻访 · 已结束),强调色、大写字距
timestring—起止时间(2026.08.08 16:00 — 09.07 03:59)
coverstring—横幅图地址(21:9 裁切铺满);不写且没有 #cover 插槽时不出横幅
status"default""live""ended""default"状态:live 进行中(类型行前闪烁红点)· ended 已结束(类型行转灰)· default 不标
插槽说明
cover横幅(代替 cover):自己放 .ak-event__banner 元素
title标题(代替 title,如包一层链接)
default时间下面的内容:倒计时 AkCountdown、按钮

AkCountdown ​

属性类型默认说明
untilstring | number | Date—截止时刻(ISO 串 / 时间戳 / Date),按当前时间实时倒数——活动、卡池、周常刷新都用它
durationnumber—或者给剩余毫秒数,从挂载时起倒数(同 Naive 的 NCountdown);有 until 时忽略
activebooleantrue是否走字;false 时停在当前读数(duration 模式下恢复后接着倒数)
precision"min""sec""min"最小单位:min 到分(默认,每分钟刷新)· sec 到秒
partsnumber—最多显示几格,从最大的单位数起:2 → 「03 days 14 hrs」/ 不足一天时「14 hrs 27 mins」(首页幻灯片);不写则一直显示到 precision
事件参数说明
finish[]倒数到 0(之后整个倒计时不再渲染)

CSS 实现 ​

块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有