Vant4 Vant4 Skeleton 骨架屏

2024-02-25 开发教程 Vant4 匿名 6

介绍

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

引入

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

import { createApp } from 'vue';
import {
Skeleton,
SkeletonTitle,
SkeletonImage,
SkeletonAvatar,
SkeletonParagraph,
} from 'vant';
const app = createApp();
app.use(Skeleton);
app.use(SkeletonTitle);
app.use(SkeletonImage);
app.use(SkeletonAvatar);
app.use(SkeletonParagraph);

代码演示

基础用法

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

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

显示头像

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

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

展示子组件

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

<van-skeleton title avatar :row="3" :loading="loading">
<div>实际内容</div>
</van-skeleton>
import { ref, onMounted } from 'vue';
export default {
setup() {
const loading = ref(true);
onMounted(() => {
loading.value = false;
});
return {
loading,
};
},
};

自定义展示内容

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

<van-skeleton>
<template #template>
<div :style="{ display: 'flex', width: '100%' }">
<van-skeleton-image />
<div :style="{ flex: 1, marginLeft: '16px' }">
<van-skeleton-paragraph row-width="60%" />
<van-skeleton-paragraph />
<van-skeleton-paragraph />
<van-skeleton-paragraph />
</div>
</div>
</template>
</van-skeleton>

API

Skeleton Props

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

SkeletonParagraph Props

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

SkeletonTitle Props

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

SkeletonAvatar Props

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

SkeletonImage Props

参数说明类型默认值
image-size图片占位图大小number | string 32px
image-shape图片占位图形状,可选值为 squarestring round

Skeleton Slots

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

类型定义

组件导出以下类型定义:

import type {
SkeletonProps,
SkeletonImageProps,
SkeletonTitleProps,
SkeletonImageShape,
SkeletonAvatarShape,
SkeletonParagraphProps,
} 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 -