Skeleton 骨架屏

在数据加载过程中显示的占位图,提供更好的用户体验。常用于列表、文章等数据加载场景。

代码示例

				
<template>
	<zk-theme type="page" :padding="30" showBack navbarTitle="skeleton骨架屏">
		<!-- 基础用法 -->
		<zk-theme type="card" :padding="30" :radius="16" margin="0 0 40rpx 0">
			<zk-text type="secondary" :size="28" weight="bold" margin="0 0 20rpx 0" text="基础用法" />
			<zk-skeleton :rowsWidth="600" />
		</zk-theme>

		<!-- 显示头像 -->
		<zk-theme type="card" :padding="30" :radius="16" margin="0 0 40rpx 0">
			<zk-text type="secondary" :size="28" weight="bold" margin="0 0 20rpx 0" text="显示头像" />
			<zk-skeleton :avatar="true" :rows="3" :rowsWidth="600" />
		</zk-theme>

		<!-- 方形头像 -->
		<zk-theme type="card" :padding="30" :radius="16" margin="0 0 40rpx 0">
			<zk-text type="secondary" :size="28" weight="bold" margin="0 0 20rpx 0" text="方形头像" />
			<zk-skeleton :avatar="true" avatar-shape="square" :rows="3" :rowsWidth="600" />
		</zk-theme>

		<!-- 自定义段落宽度 -->
		<zk-theme type="card" :padding="30" :radius="16" margin="0 0 40rpx 0">
			<zk-text type="secondary" :size="28" weight="bold" margin="0 0 20rpx 0" text="自定义段落宽度" />
			<zk-skeleton :title="true" :rows="3" :rows-width="[450, 500, 550]" />
		</zk-theme>

		<!-- 关闭动画 -->
		<zk-theme type="card" :padding="30" :radius="16" margin="0 0 40rpx 0">
			<zk-text type="secondary" :size="28" weight="bold" margin="0 0 20rpx 0" text="关闭动画" />
			<zk-skeleton :animate="false" :avatar="true" :rows="3" :rowsWidth="600" />
		</zk-theme>

		<!-- 自定义颜色 -->
		<zk-theme type="card" :padding="30" :radius="16" margin="0 0 40rpx 0">
			<zk-text type="secondary" :size="28" weight="bold" margin="0 0 20rpx 0" text="自定义颜色" />
			<zk-skeleton background-color="#f59685" :avatar="true" :rows="3" :rowsWidth="600" />
		</zk-theme>

	</zk-theme>
</template>

<script>
	export default {
		data() {
			return {}
		}
	}
</script>

<style lang="scss">
	/* #ifndef APP-NVUE */
	.skeleton-content {
		display: flex;
		align-items: flex-start;
		padding: 20rpx;
	}

	.skeleton-avatar {
		width: 80rpx;
		height: 80rpx;
		background-color: #f2f3f5;
		border-radius: 50%;
		margin-right: 20rpx;
	}

	.skeleton-info {
		flex: 1;
	}

	/* #endif */

	/* #ifdef APP-NVUE */
	.skeleton-content {
		flex-direction: row;
		align-items: flex-start;
		padding: 20rpx;
	}

	.skeleton-avatar {
		width: 80rpx;
		height: 80rpx;
		background-color: #f2f3f5;
		border-radius: 40rpx;
		margin-right: 20rpx;
	}

	.skeleton-info {
		flex: 1;
		flex-direction: column;
	}

	/* #endif */
</style>
			

API

Props 属性

参数 说明 类型 默认值
loading 是否显示骨架屏 boolean true
title 是否显示标题占位图 boolean true
title-width 标题占位图宽度 string / number 50%
avatar 是否显示头像占位图 boolean false
avatar-size 头像占位图大小 string / number 80
avatar-shape 头像形状,可选值:circle / square string circle
paragraph 是否显示段落占位图 boolean true
rows 段落占位图行数 number 3
rows-width 段落占位图宽度,可传数组分别设置每行宽度 array / string / number 100%
animate 是否开启动画 boolean true
background-color 骨架屏背景色,支持主题配置,优先级:props > theme > 默认值 string #f2f3f5

Slots 插槽

名称 说明
default 骨架屏结束后显示的内容

主题定制

组件支持通过主题配置来统一定制骨架屏的样式:


// 在 store 中配置
{
    theme: {
        current: {
            skeletonBg: '#f2f3f5',    // 骨架屏背景色
            skeletonAnim: '#e5e6eb'   // 动画色值
        }
    }
}