跳到主要内容

Skeleton 骨架屏

在需要等待加载内容时的占位。

基础用法​

基础用法
import { LhSkeleton } from '@lh-ui/react'

export default function Demo() {
return <LhSkeleton avatar rows={2} sx={{ w: 300 }} />
}

Skeleton Props​

属性说明类型可选值默认值
loading是否显示骨架(false 时渲染子节点)boolean—true
rows文本行数number—3
avatar是否含圆形头像占位boolean—false
animated是否开启动画boolean—true
sx快速布局属性SxProps——

SkeletonItem Props​

LhSkeletonItem 为独立导出的占位块,可单独使用组合任意骨架结构。

属性说明类型可选值默认值
variant占位块形状'text' | 'rect' | 'circle'—'text'
animated是否开启动画boolean—true
className追加类名string——
style追加内联样式CSSProperties——
sx快速布局属性SxProps——
import { LhSkeletonItem } from '@lh-ui/react'

export default function Demo() {
return (
<div style={{ display: 'flex', gap: 16, width: 300 }}>
<LhSkeletonItem variant="circle" />
<div style={{ flex: 1 }}>
<LhSkeletonItem style={{ marginBottom: 8 }} />
<LhSkeletonItem style={{ width: '60%' }} />
</div>
</div>
)
}
行宽算法

rows > 1 时最后一行缩为 60%,模拟真实段落排版;根元素必须有确定宽度(行宽为百分比)。

无障碍

骨架容器输出 aria-busy="true" + aria-live="polite";占位块全部 aria-hidden,数据就绪后读屏会重新播报真实内容。prefers-reduced-motion 下动画自动降级为静态占位。

样式​

import '@lh-ui/react/style/skeleton'