跳到主要內容

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'