Skip to content
通用组件

加载Spinner

游戏内 loading 的菱形涟漪 / 三竖条;可带说明,可包住内容做加载层。

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

游戏内 loading 的菱形涟漪:中央常驻一枚空心菱形(中坚术师分支图标那枚),另一枚环从它身上冒出来、边扩边淡到没,1.2s 一枚。减弱动效时环不出,只留中央静止的菱形。按钮的加载态不用它(36px 高里放不开),是按钮自己的圆弧转圈。

写法同 Naive UI 的 n-spin:description、show、默认插槽包住内容。

样子 · 说明 ​

variant="bars" 是三根竖条(更轻,放在行内)。color 换色(写到 CSS 约定的 --_c,只对菱形生效)。description 排在图形下方。

包住内容 ​

默认插槽写了内容时,show 为真就把内容压淡、不可点,菱形 + 说明叠在正中;容器标 aria-busy。适合表格、卡片这类「旧内容还在、新数据在路上」的局部刷新;整块还没有内容时用骨架屏。

可访问性 ​

  • 图形 role="status",可访问名默认「加载中」(label 改写);有说明时念说明。
  • 包住内容时容器 aria-busy="true",读屏等加载完再念变化。

Vue API ​

属性类型默认说明
variant"diamond""bars""diamond"样子:diamond 菱形涟漪(游戏内 loading,默认)· bars 三根竖条(行内、更轻)
descriptionstring—说明文字,排在图形下方(同 Naive)
showbooleantrue包住内容时是否在加载(同 Naive);不包内容时无效,要藏起来直接 v-if
colorstring—换色:写到 CSS 的 --_c(只对 diamond 生效),如 "var(--ak-yellow-500)"
labelstring"加载中"读屏文本;有 description 时念 description
插槽说明
default正在加载的内容:加载层叠在它上面
description说明(代替 description)

CSS 实现 ​

大小由 font-size 定(默认 12px → 29px 见方),--_c 换色。::before 是中央常驻的空心菱形(.75em、2px 线);::after 是涟漪环——同一枚菱形用 border 画,width / height 从刚好箍住中央那枚外沿扩到 1.65em(不用 scale,线宽恒 2px),opacity 另一条曲线淡到 0,各 1.2s。游戏里环出生时还带随机剪切,这个尺寸下施展不开,没做。菱形是源石母题,见设计理念 · 菱形。说明与加载层(.ak-spin / .ak-spin-container)是给 Vue 组件补的外壳,模板里一般直接放 <span class="ak-spinner" role="status" aria-label="加载中"></span>。

块元素 __修饰 --

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