# Skeleton 骨架屏
內容載入過程中的佔位。LhSkeleton 組合式佔位(頭像 + 文字行),LhSkeletonItem 按形狀自由拼裝。
骨架屏
<template>
<div class="demo-col">
<div class="demo-row" style="gap: 24px; align-items: flex-start; flex-wrap: wrap">
<div style="width: 260px">
<p class="demo-note">avatar + rows + animated</p>
<LhSkeleton :loading="loading" :rows="3" avatar animated>
<div>
<strong>溪山行旅圖</strong>
<p>范寬·北宋。雨點皴寫山石,氣勢雄壯。</p>
</div>
</LhSkeleton>
</div>
<div style="width: 260px">
<p class="demo-note">SkeletonItem 自由組合形狀</p>
<LhSkeletonItem variant="rect" style="width: 100%; height: 120px" animated />
<LhSkeletonItem variant="text" style="margin-top: 12px" animated />
<div class="demo-row" style="gap: 12px; margin-top: 12px">
<LhSkeletonItem variant="circle" style="width: 40px; height: 40px" animated />
<LhSkeletonItem variant="text" style="flex: 1" animated />
</div>
</div>
</div>
<p class="demo-note">loading=false 時渲染真實內容</p>
<LhSkeleton :loading="false" :rows="2">
<p>這是真實內容:loading 關閉後骨架屏讓位給插槽。</p>
</LhSkeleton>
<LhButton size="small" style="margin-top: 12px" @click="toggle">
{{ loading ? '關閉載入態' : '重新載入' }}
</LhButton>
</div>
</template>
<script>
export default {
data: () => ({
loading: true,
}),
methods: {
toggle() {
this.loading = !this.loading
},
},
}
</script>
# Skeleton Props
| 屬性 | 說明 | 類型 | 預設值 |
|---|---|---|---|
| loading | 是否處於載入態(false 時渲染 default 插槽的真實內容) | boolean | false |
| rows | 文字行數 | number | — |
| avatar | 是否包含圓形頭像佔位 | boolean | false |
| animated | 是否開啟動畫 | boolean | false |
| sx | sx 快速佈局屬性 | — | — |
# SkeletonItem Props
| 屬性 | 說明 | 類型 | 預設值 |
|---|---|---|---|
| variant | 佔位塊形狀 | 'text' \| 'rect' \| 'circle' | 'text' |
| animated | 是否開啟動畫 | boolean | false |
| sx | sx 快速佈局屬性 | — | — |
# Slots
LhSkeleton 預設插槽:loading=false 時渲染的真實內容。
Copyright © 2024-2026 风默文学 | 宁ICP备2024006574号 |
苏公网安备32040002010537