Spin
加载指示器,严格对齐 Semi Design:统一 DOM(.cd-spin > .cd-spin-wrapper 指示器 + .cd-spin-children 内容),有 children 时块级包裹并遮罩内容(opacity 0.5、不可交互),无 children 时独立指示器。delay 延迟去抖(复用 @chenzy-design/core createSpinController,无 minShowTime)。role=status + aria-live=polite 公布加载,装饰 SVG aria-hidden,reduced-motion 退化为呼吸。spinning 受控不回写。
如何引入
import { Spin } from '@chenzy-design/svelte';基本用法
最简单的加载指示器。
A basic spin.
尺寸
组件定义了三种尺寸:large、middle(默认)、small。
size: small
size: middle
size: large
带文字的
通过 tip 属性可设置当 Spin 用作包裹元素时的文字。
I am loading...
Here are some texts.
And more texts on the way.
自定义指示符
通过设置 indicator 属性自定义 Spin 的指示符样式。
A spin with customized indicator.
延迟显示
通过 delay 设置延迟显示 loading 的效果;是否处于 loading 由传入的 spinning 决定,为受控属性。
API 参考
Spin
Props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
spinning | 是否处于加载中的状态;受控不回写 | boolean | true |
size | 组件大小 | 'small'|'middle'|'large' | 'middle' |
indicator | 自定义加载指示符 | Snippet | undefined |
delay | 延迟显示加载效果的时间(ms) | number | 0 |
tip | 作为包裹元素时的描述文字,空则不渲染 | string | '' |
wrapperClassName | 包裹元素的类名 | string | '' |
style | 根节点内联样式 | string | undefined |
childStyle | 内部子元素(.cd-spin-children)的样式 | string | undefined |
children | 提供则块级包裹内容并叠加遮罩 | Snippet | undefined |
Slots
| 名称 | 说明 |
|---|---|
children | 被包裹的内容(提供则进入 block 包裹模式) |
indicator | 自定义指示器 |
Accessibility
- loading 时 .cd-spin-wrapper 使用 role=status + aria-live=polite(隐式 aria-atomic)公布加载;无 tip 时以 i18n Spin.loading 为 aria-label;内置渐变 SVG aria-hidden;组件无可聚焦元素,不进入 Tab 序列;reduced-motion 旋转退化为 opacity 呼吸。
设计变量
| 变量 | 默认值 | 用法 |
|---|---|---|
--cd-animation-duration-spin-custom-children-spin | 1600ms | 自定义指示器时旋转一周时长 |
--cd-animation-duration-spin-wrapper-spin | 600ms | 加载图标容器旋转一周时长 |