Skip to content

Spin 加载中 ​

加载指示器,可单独使用,也可包裹内容并叠加遮罩;支持文案、进度、全屏与自定义指示器。

基础用法 ​

size 支持 xs / small / medium(默认)/ large / xl 五档;旧缩写 sm/md/lg 保留兼容。

五种尺寸

旧缩写别名(sm / md / lg)

size 还接受任意 CSS 尺寸:纯数字按 px 解释,带单位值(2rem / 40px / 10%)与 calc() 直取。

任意值尺寸

形态变体 ​

variant 提供三档形态:ring(默认边框环)/ dot(三点脉冲)/ bars(三条伸缩),尺寸体系三形态通用。

ring / dot / bars

dot 行内小尺寸(文字旁加载)

加载更多

加载文案 tip ​

tip 属性配纯文本,具名 tip 插槽配富内容(插槽优先);tip-position 控制文案方位(above / below 默认 / before / after);hide-icon 只要文案不要指示器。

tip 文案与四向方位

富文案插槽与 hide-icon

富文案插槽

包裹内容 ​

包裹内容时指示器与文案居中显示并叠加半透明遮罩;show-overlay="false" 关闭遮罩。

包裹内容

加载中的内容区域

关闭遮罩(show-overlay="false")

内容保持完全可见

delay 防闪烁 ​

请求快于动画感知时,指示器一闪而过反而干扰。delay(毫秒)让指示器延迟出现:延迟窗口内加载结束则完全不出现;aria-busy 语义立即生效不受延迟影响。

快速请求不闪烁

200ms 快速请求 → 不出现;2s 慢请求 → 延迟后出现
快速请求(200ms,不闪烁)慢请求(2s,延迟后出现)

自定义指示器 ​

具名 icon 插槽替换默认环(尺寸由内容自带);rotate 属性让自定义指示器旋转——普通 SVG 图标加 rotate,GIF / 静态 SVG 不加即保持静止。

icon 插槽与 rotate

◈

进度模式 percent ​

未知时长用默认形态;已知进度时 percent(0-100)切换为 determinate 进度环(role="progressbar" + aria-value 三件套);percent="auto" 在加载期间自动推进模拟进度(上限 90%,结束后从头推进)。确定进度场景也可用 Progress 进度 的 circle 形态。

determinate 进度环

进度步进与 auto 模拟进度

进度 +15

暂停 paused ​

paused 冻结循环动画(保留当前帧),用于截图 / 演示 / 逐帧检查场景。

paused 冻结对比

视觉定制 ​

组件级 CSS 变量:--oas-spin-indicator-color(指示色)/ --oas-spin-track-color(轨道色)/ --oas-spin-border-width(线宽)/ --oas-spin-duration(动画时长)/ --oas-spin-mask-bg(遮罩背景)/ --oas-spin-z-index(全屏层级)。inherit-color 让指示色继承宿主文字色;block 让宿主占满一行。

CSS 变量定制

inherit-color 继承文字色

品牌色文字成功色文字

全屏加载 ​

fullscreen 属性进入全屏遮罩居中加载;命令式 OASSpin.fullscreen() 返回 { close } 句柄,适合异步流程中直接调用(可叠用,各句柄独立关闭)。

全屏加载(2 秒后自动关闭)

全屏加载 2s带 delay 的全屏(3s)

全局默认指示器 ​

OASSpin.setDefaultIndicator(html) 注册品牌加载动画:此后新建的实例在未用 icon 插槽时渲染注册的 HTML 替代内置环;传 null 恢复。优先级:icon 插槽 > 全局默认 > 内置环。

注册全局指示器并新建实例

注册并新建实例恢复内置并新建实例

无障碍 ​

  • 指示器 role="status",内置视觉隐藏读屏文案(默认走 locale 的「加载中…」,设置 tip 后读 tip,宿主 aria-label 优先级最高)
  • 进度模式切换为 role="progressbar" 并同步 aria-valuemin/max/now
  • 宿主 aria-busy 随 spinning 立即同步;区域加载建议为内容容器补充 aria-busy 并以 aria-describedby 指向 spin:
html
<section aria-busy="true" aria-describedby="page-spin">
  <oas-spin id="page-spin" spinning tip="加载中"></oas-spin>
  <!-- 区域内容 -->
</section>
  • 系统开启「减少动态效果」时动画自动降级为静态指示器(prefers-reduced-motion)

API ​

oas-spin ​

属性 ​

属性说明类型默认值
aria-label读屏文案(aria-busy 同步)——
block块级铺满容器宽度——
delay防闪烁延迟(ms):spinning 置位后延迟渲染,delay 内结束则完全不出现string—
fullscreen全屏加载(遮罩铺满视口)——
hide-icon隐藏默认指示器(配合 slot="icon" 或纯文案)boolean—
inherit-color指示器继承宿主文字色——
paused暂停旋转(进度模式冻结推进)——
percent进度模式:number 显式百分比或 auto(未知进度模拟推进)string—
rotate自定义指示器是否自动旋转(默认不转——仅在属性在场时旋转;gif/静态 SVG 不设即保持静止)boolean—
show-overlay包裹内容时是否显示遮罩stringtrue
size指示器尺寸:xs / small / medium(默认)/ large / xl;旧缩写 sm/md/lg 保留兼容stringmedium
spinning是否加载中;设置后包裹内容并叠加遮罩boolean—
tip加载文案(独立态显示于指示器下方,包裹态显示于遮罩中央);富内容用 slot="tip"string—
tip-position文案位置stringbelow
variant形态变体stringring

插槽 ​

名称说明
默认被包裹的内容(包裹态叠加遮罩)
icon自定义指示器插槽,替换默认圆环
tip加载文案富内容插槽,覆盖 tip 属性

CSS 变量 ​

CSS 变量说明默认值
--oas-spin-border-width线宽(环形边框 / 进度条);xs、small 档为 2px3px
--oas-spin-duration旋转周期0.8s
--oas-spin-indicator-color指示器颜色var(--oas-color-primary)
--oas-spin-mask-bg遮罩背景(包裹态 / 全屏态)color-mix(in srgb, var(--oas-color-bg) 70%, transparent)
--oas-spin-track-color轨道色(环形底轨 / 进度槽)var(--oas-color-bg-hover)
--oas-spin-z-index全屏层级3500

静态方法 ​

方法说明
OASSpin.fullscreen(options?)命令式全屏加载,返回 { close() };options: { tip?: string; delay?: number }
OASSpin.setDefaultIndicator(html | null)注册全局默认指示器(此后新建实例生效);null 恢复内置环

指示器 role="status"(进度模式为 role="progressbar" + aria-value 三件套),内置读屏文案;宿主 aria-busy 随 spinning 同步。

基于 MIT OR Apache-2.0 双许可发布