# 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 레이아웃 단축 속성 | — | — |
# 슬롯
LhSkeleton 기본 슬롯: loading=false일 때 렌더링되는 실제 콘텐츠입니다.
Copyright © 2024-2026 FengMo WenXue