外观
Skeleton 骨架屏
约 723 字大约 2 分钟
2025-10-31
骨架屏一般用于页面在请求远程数据尚未完成时,页面用灰色块预显示本来的页面结构,给用户更好的体验。
基本使用
组件由标题,段落和头像组件组件,其中段落需要通过rows参数配置才显示,可以通过title和avatar是否显示标题和头像 。
该组件的使用,有几个需要注意的点,如下:
title(可选),是否显示标题占位行,该占位行不布满全屏宽度,同时与段落的距离较大以做明显区分avatar(可选),是否在左上角位置显示圆形的头像占位区域rows(可选),段落的行数loading(必选),是否加载中状态,如果为`true```则显示骨架屏组件占位,否则显示插槽中的内容
数据请求完成后,将loading设置为false,会隐藏骨架组件
<template>
<un-skeleton rows="3" title loading></un-skeleton>
</template>加载中动画
设置animate为true,加载中的骨架块将会有一个动画效果,用以加强视觉效果。
<un-skeleton :loading="true" :animate="true"></un-skeleton>显示头像
<un-skeleton :loading="true" avatar rows="1"></un-skeleton>插槽内容
可以通过插槽写入展示的内容,当请求结束,将loading设置为false,此时会隐藏骨架组件,同时展示插槽内容。
<template>
<un-skeleton rows="2" :loading="loading" avatar :title="false">
<un-text>loading为false时,将会展示此处插槽内容</un-text>
</un-skeleton>
</template>
<script>
export default {
data() {
return {
loading: true
}
},
onLoad() {
// 延时2秒钟
uni.$u.sleep(2000).then(() => {
this.loading = false
})
}
}
</script>API
Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| loading | 是否显示骨架占位图 | Boolean | true |
| animate | 是否开启动画效果 | Boolean | true |
| rows | 段落占位图行数 | Number | String | 0 |
| rowsWidth | 段落占位图的宽度,可以为百分比,数值,带单位字符串等,可通过数组传入指定每个段落行的宽度 | String | Number | Array<Number | String> | 100% |
| rowsHeight | 段落的高度 | String | Number | Array<Number | String> | 18 |
| title | 是否展示标题占位图 | Boolean | true |
| titleWidth | 标题的宽度 | String | Number | 50% |
| titleHeight | 标题的高度 | String | Number | 18 |
| avatar | 是否展示头像占位图 | Boolean | false |
| avatarSize | 头像占位图大小 | String | Number | 32 |
| avatarShape | 头像占位图的形状 | Enum | circle |
Scss 变量
| 变量名 | 默认值 | 说明 |
|---|---|---|
| $un-skeleton-avatar-margin-right | 15px | 头像右侧间距 |
| $un-skeleton-avatar-size | 32px | 头像尺寸 |
| $un-skeleton-bg-color-light | #F1F2F4 | 浅色背景色 |
| $un-skeleton-bg-color-lighter | #e6e6e6 | 更浅色背景色 |
| $un-skeleton-animation-duration | 1.8s | 动画时长 |
| $un-skeleton-background-size | 400% 100% | 背景尺寸 |
| $un-skeleton-row-height | 18px | 行高 |
| $un-skeleton-row-margin-top | 12px | 行顶部间距 |
| $un-skeleton-title-margin-top | 20px | 标题顶部间距 |
提示
组件内部默认使用 scss 变量,如需修改,请查看 scss 变量使用 文档
