骨架屏 Skeleton

骨架屏是一种用于在内容加载过程中提供视觉反馈的 UI 组件,通过显示占位元素来提升用户体验。

何时使用

  • 页面或组件内容需要异步加载时
  • 希望在内容加载过程中提供更好的用户体验时
  • 需要减少页面闪烁和布局跳动时

示例

基础用法

最简单的骨架屏使用方式。

正在加载组件...
code

与内容结合使用

骨架屏常与实际内容结合使用,在加载完成时切换显示。

正在加载组件...
code

无动画效果

通过 animated 属性可以关闭骨架屏的动画效果。

正在加载组件...
code

基础元素变体

Skeleton 提供了多种基础元素变体。

正在加载组件...
code

头像骨架

用于显示用户头像的加载状态。

正在加载组件...
code

标题和段落骨架

用于显示标题和段落文本的加载状态。

正在加载组件...
code

段落宽度控制

可以自定义段落每一行的宽度。

正在加载组件...
code

按钮骨架

用于显示按钮的加载状态。

正在加载组件...
code

图片骨架

用于显示图片的加载状态。

正在加载组件...
code

卡片骨架

用于显示卡片组件的加载状态。

正在加载组件...
code

列表骨架

用于显示列表项的加载状态。

正在加载组件...
code

表格骨架

用于显示表格的加载状态。

正在加载组件...
code

个人信息卡片骨架

用于显示个人信息卡片的加载状态。

正在加载组件...
code

API

Skeleton Props

参数说明类型默认值
loading是否显示骨架屏booleantrue
animated是否显示动画booleantrue
children子元素(loading 为 false 时显示)ReactNode-
className自定义类名string-

Skeleton.Element Props

参数说明类型默认值
variant形状'text' | 'circular' | 'rectangular' | 'rounded''text'
width宽度number | string-
height高度number | string-
animated是否显示动画booleantrue
className自定义类名string-
style自定义样式CSSProperties-

Skeleton.Avatar Props

参数说明类型默认值
size尺寸number | 'sm' | 'md' | 'lg''md'
shape形状'circle' | 'square''circle'
animated是否显示动画booleantrue
className自定义类名string-

Skeleton.Title Props

参数说明类型默认值
width宽度number | string'40%'
animated是否显示动画booleantrue
className自定义类名string-

Skeleton.Paragraph Props

参数说明类型默认值
rows行数number3
width每行宽度,可以是数组number | string | (number | string)[]-
animated是否显示动画booleantrue
className自定义类名string-

Skeleton.Button Props

参数说明类型默认值
size尺寸'sm' | 'md' | 'lg''md'
shape形状'default' | 'circle' | 'round''default'
block是否块级booleanfalse
animated是否显示动画booleantrue
className自定义类名string-

Skeleton.Image Props

参数说明类型默认值
width宽度number | string200
height高度number | string200
animated是否显示动画booleantrue
className自定义类名string-

注意事项

  1. 骨架屏主要用于在内容加载过程中提供视觉反馈,提升用户体验
  2. 通过 loading 属性控制是否显示骨架屏,当 loadingfalse 时会显示实际内容
  3. 通过 animated 属性可以控制是否显示加载动画效果
  4. Skeleton 提供了多种预设组件:
    • Skeleton.Element:基础元素骨架
    • Skeleton.Avatar:头像骨架
    • Skeleton.Title:标题骨架
    • Skeleton.Paragraph:段落骨架
    • Skeleton.Button:按钮骨架
    • Skeleton.Image:图片骨架
  5. 可以通过 widthheight 属性自定义骨架元素的尺寸
  6. Skeleton.Paragraph 支持自定义每行的宽度,可以通过数组形式分别设置每行宽度
  7. 在暗色模式下,骨架屏会自动适配主题颜色
  8. 骨架屏组件不包含任何业务逻辑,仅用于UI展示