Skip to content

Skeleton 骨架屏

用于在真实内容尚未返回时提供结构化占位,减少页面跳动并提升感知性能。

交互式调试

🔧调试模式Playground

基础用法

vue
<lk-skeleton :rows="3" />

带头像与标题

适合用户信息、评论、列表卡片等信息块。

vue
<lk-skeleton avatar title :rows="3" />

自定义行宽与高度

rowWidthrowHeight 都支持单值或数组,数组模式下会按每一行依次取值,不足时复用最后一项。

vue
<lk-skeleton
  :rows="4"
  :row-width="['90%', '80%', '70%', '60%']"
  :row-height="['32rpx', '32rpx', '24rpx', '24rpx']"
  round
/>

作为内容占位容器

loadingfalse 时,组件会渲染默认插槽内容。这是最推荐的业务接入方式。

vue
<script setup lang="ts">
import { ref } from 'vue'

const loading = ref(true)
</script>

<template>
  <lk-skeleton :loading="loading" avatar title :rows="4" animated>
    <view class="user-card">
      <text>真实内容</text>
    </view>
  </lk-skeleton>
</template>

动画与节奏

通过 animateddurationeasing 控制骨架屏的呼吸节奏。

vue
<lk-skeleton animated :duration="1.6" easing="linear" :rows="3" />

推荐示例

1) 直接复用项目 Demo(推荐)

vue
<script setup lang="ts">
import SkeletonDemo from '@/components/demos/skeleton-demo.vue'
</script>

<template>
  <SkeletonDemo />
</template>

2) 在业务页中按需组合

vue
<template>
  <view class="page-demo">
    <lk-skeleton />
  </view>
</template>

API

Props

参数说明类型默认值
customClass组件可视根节点自定义类名string | object | array''
customStyle组件可视根节点自定义样式string | object''
loading是否显示骨架;为 false 时渲染默认插槽booleantrue
avatar是否显示头像占位booleanfalse
avatarSize头像尺寸string'72rpx'
title是否显示标题占位booleanfalse
titleWidth标题宽度string'40%'
titleHeight标题高度string'32rpx'
rows内容占位行数number3
rowWidth每行宽度;可传单值或数组string | string[]'100%'
rowHeight每行高度;可传单值或数组string | string[]'32rpx'
animated是否开启动画booleantrue
round是否使用圆角风格booleanfalse
duration动画时长(秒或时间字符串)number | string2.4
easing动画缓动函数string'ease-in-out'

Events

当前版本未额外暴露自定义事件。

Slots

插槽名说明
defaultloadingfalse 时显示的真实内容

使用建议

TIP

将骨架块的宽高比例尽量设计得接近真实内容,可以显著减少加载完成时的布局跳动。

WARNING

如果你只是想表达“正在处理中”,优先使用 lk-loading;如果要模拟页面结构,优先使用 lk-skeleton

基于 MIT 协议开源 · 粤ICP备2022114240号-3

Skeleton 骨架屏

正在连接预览服务...

请先运行 pnpm run dev:h5