Skeleton 骨架屏

介绍

用于在内容加载过程中展示一组占位图形。

引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册

  1. import { createApp } from 'vue';
  2. import {
  3. Skeleton,
  4. SkeletonTitle,
  5. SkeletonImage,
  6. SkeletonAvatar,
  7. SkeletonParagraph,
  8. } from 'vant';
  9. const app = createApp();
  10. app.use(Skeleton);
  11. app.use(SkeletonTitle);
  12. app.use(SkeletonImage);
  13. app.use(SkeletonAvatar);
  14. app.use(SkeletonParagraph);

代码演示

基础用法

通过 title 属性显示标题占位图,通过 row 属性配置占位段落行数。

  1. <van-skeleton title :row="3" />

显示头像

通过 avatar 属性显示头像占位图。

  1. <van-skeleton title avatar :row="3" />

展示子组件

loading 属性设置成 false 表示内容加载完成,此时会隐藏占位图,并显示 Skeleton 的子组件。

  1. <van-skeleton title avatar :row="3" :loading="loading">
  2. <div>实际内容</div>
  3. </van-skeleton>
  1. import { ref, onMounted } from 'vue';
  2. export default {
  3. setup() {
  4. const loading = ref(true);
  5. onMounted(() => {
  6. loading.value = false;
  7. });
  8. return {
  9. loading,
  10. };
  11. },
  12. };

自定义展示内容

通过 template 插槽完成自定义内容的展示。

  1. <van-skeleton>
  2. <template #template>
  3. <div :style="{ display: 'flex', width: '100%' }">
  4. <van-skeleton-image />
  5. <div :style="{ flex: 1, marginLeft: '16px' }">
  6. <van-skeleton-paragraph row-width="60%" />
  7. <van-skeleton-paragraph />
  8. <van-skeleton-paragraph />
  9. <van-skeleton-paragraph />
  10. </div>
  11. </div>
  12. </template>
  13. </van-skeleton>

API

Skeleton Props

参数说明类型默认值
row段落占位图行数number | string0
row-width段落占位图宽度,可传数组来设置每一行的宽度number | string |
(number | string)[]
100%
title是否显示标题占位图booleanfalse
avatar是否显示头像占位图booleanfalse
loading是否显示骨架屏,传 false 时会展示子组件内容booleantrue
animate是否开启动画booleantrue
round是否将标题和段落显示为圆角风格booleanfalse
title-width标题占位图宽度number | string40%
avatar-size头像占位图大小number | string32px
avatar-shape头像占位图形状,可选值为 squarestringround

SkeletonParagraph Props

参数说明类型默认值
round是否将段落显示为圆角风格booleanfalse
row-width段落占位图宽度string100%

SkeletonTitle Props

参数说明类型默认值
round是否将标题显示为圆角风格booleanfalse
title-width标题占位图宽度number | string40%

SkeletonAvatar Props

参数说明类型默认值
avatar-size头像占位图大小number | string32px
avatar-shape头像占位图形状,可选值为 squarestringround

SkeletonImage Props

参数说明类型默认值
image-size图片占位图大小number | string32px
image-shape图片占位图形状,可选值为 squarestringround

Skeleton Slots

名称说明
default骨架屏内容
template自定义内容

类型定义

组件导出以下类型定义:

  1. import type {
  2. SkeletonProps,
  3. SkeletonImageProps,
  4. SkeletonTitleProps,
  5. SkeletonImageShape,
  6. SkeletonAvatarShape,
  7. SkeletonParagraphProps,
  8. } from 'vant';

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件

名称默认值描述
—van-skeleton-paragraph-height16px-
—van-skeleton-paragraph-backgroundvar(—van-active-color)-
—van-skeleton-paragraph-margin-topvar(—van-padding-sm)-
—van-skeleton-title-width40%-
—van-skeleton-avatar-size32px-
—van-skeleton-avatar-backgroundvar(—van-active-color)-
—van-skeleton-duration1.2s-
—van-skeleton-image-size96px
—van-skeleton-image-radius24px-

Skeleton 骨架屏 - 图1