Skeleton 骨架屏

介绍

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

代码演示

基础用法

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

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

显示头像

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

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

展示子组件

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

<view class="demo-skeleton-switch">
  <z-switch v-model="show" />
</view>
<z-skeleton title avatar :row="2" :loading="!show">
  <view class="demo-skeleton-preview">
    <image src="https://cdn.zebraui.com/zebra-ui/images/logo.png" />
    <view class="demo-skeleton-content">
      <view class="title">标题</view>
      <view class="desc"
        >zebra-swiper 是基于uniapp开发的一款移动端轮播组件。</view
      >
    </view>
  </view>
</z-skeleton>
import { ref } from 'vue'
const show = ref(false)
.demo-skeleton {
  color: var(--z-text-color);

  &-switch {
    margin-bottom: 30rpx;
  }

  &-preview {
    display: flex;

    image {
      flex-shrink: 0;
      width: 100rpx;
      height: 100rpx;
    }
  }

  &-content {
    margin-top: 16rpx;

    .title {
      font-size: 36rpx;
      line-height: 50rpx;
    }

    .desc {
      font-size: 26rpx;
      line-height: 40rpx;
    }
  }
}

自定义展示内容

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

<z-skeleton>
  <template #template>
    <view :style="{ display: 'flex', width: '100%' }">
      <z-skeleton-image />
      <view :style="{ flex: 1, marginLeft: '32rpx' }">
        <z-skeleton-paragraph row-width="60%" />
        <z-skeleton-paragraph />
        <z-skeleton-paragraph />
        <z-skeleton-paragraph />
      </view>
    </view>
  </template>
</z-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 | string64rpx
avatar-shape头像占位图形状,可选值为 squarestringround

SkeletonParagraph Props

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

SkeletonTitle Props

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

SkeletonAvatar Props

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

SkeletonImage Props

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

Skeleton Slots

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

主题定制

样式变量

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

名称默认值描述
--z-skeleton-paragraph-height32rpx-
--z-skeleton-paragraph-backgroundvar(--z-active-color)-
--z-skeleton-paragraph-margin-topvar(--z-padding-sm)-
--z-skeleton-title-width40%-
--z-skeleton-avatar-size64rpx-
--z-skeleton-avatar-backgroundvar(--z-active-color)-
--z-skeleton-duration1.2s-
--z-skeleton-image-size192rpx
--z-skeleton-image-radius48rpx-