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是否处于加载中的状态;受控不回写booleantrue
size组件大小'small'|'middle'|'large''middle'
indicator自定义加载指示符Snippetundefined
delay延迟显示加载效果的时间(ms)number0
tip作为包裹元素时的描述文字,空则不渲染string''
wrapperClassName包裹元素的类名string''
style根节点内联样式stringundefined
childStyle内部子元素(.cd-spin-children)的样式stringundefined
children提供则块级包裹内容并叠加遮罩Snippetundefined

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加载图标容器旋转一周时长