Vant4 Skeleton 骨架屏

2023-02-16 17:56 更新

介紹

用于在內(nèi)容加載過(guò)程中展示一組占位圖形。

引入

通過(guò)以下方式來(lái)全局注冊(cè)組件,更多注冊(cè)方式請(qǐng)參考組件注冊(cè)

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);

代碼演示

基礎(chǔ)用法

通過(guò) ?title? 屬性顯示標(biāo)題占位圖,通過(guò) ?row? 屬性配置占位段落行數(shù)。

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

顯示頭像

通過(guò) ?avatar? 屬性顯示頭像占位圖。

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

展示子組件

將 ?loading? 屬性設(shè)置成 ?false? 表示內(nèi)容加載完成,此時(shí)會(huì)隱藏占位圖,并顯示 ?Skeleton? 的子組件。

<van-skeleton title avatar :row="3" :loading="loading">
  <div>實(shí)際內(nèi)容</div>
</van-skeleton>
import { ref, onMounted } from 'vue';

export default {
  setup() {
    const loading = ref(true);

    onMounted(() => {
      loading.value = false;
    });

    return {
      loading,
    };
  },
};

自定義展示內(nèi)容

通過(guò) ?template? 插槽完成自定義內(nèi)容的展示。

<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

參數(shù) 說(shuō)明 類(lèi)型 默認(rèn)值
row 段落占位圖行數(shù) number | string 0
row-width 段落占位圖寬度,可傳數(shù)組來(lái)設(shè)置每一行的寬度 number | string |
(number | string)[]
100%
title 是否顯示標(biāo)題占位圖 boolean false
avatar 是否顯示頭像占位圖 boolean false
loading 是否顯示骨架屏,傳 false 時(shí)會(huì)展示子組件內(nèi)容 boolean true
animate 是否開(kāi)啟動(dòng)畫(huà) boolean true
round 是否將標(biāo)題和段落顯示為圓角風(fēng)格 boolean false
title-width 標(biāo)題占位圖寬度 number | string 40%
avatar-size 頭像占位圖大小 number | string 32px
avatar-shape 頭像占位圖形狀,可選值為 square string round

SkeletonParagraph Props

參數(shù) 說(shuō)明 類(lèi)型 默認(rèn)值
round 是否將段落顯示為圓角風(fēng)格 boolean false
row-width 段落占位圖寬度 string 100%

SkeletonTitle Props

參數(shù) 說(shuō)明 類(lèi)型 默認(rèn)值
round 是否將標(biāo)題顯示為圓角風(fēng)格 boolean false
title-width 標(biāo)題占位圖寬度 number | string 40%

SkeletonAvatar Props

參數(shù) 說(shuō)明 類(lèi)型 默認(rèn)值
avatar-size 頭像占位圖大小 number | string 32px
avatar-shape 頭像占位圖形狀,可選值為 square string round

SkeletonImage Props

參數(shù) 說(shuō)明 類(lèi)型 默認(rèn)值
image-size 圖片占位圖大小 number | string 32px
image-shape 圖片占位圖形狀,可選值為 square string round

Skeleton Slots

名稱(chēng) 說(shuō)明
default 骨架屏內(nèi)容
template 自定義內(nèi)容

類(lèi)型定義

組件導(dǎo)出以下類(lèi)型定義:

import type {
  SkeletonProps,
  SkeletonImageProps,
  SkeletonTitleProps,
  SkeletonImageShape,
  SkeletonAvatarShape,
  SkeletonParagraphProps,
} from 'vant';

主題定制

樣式變量

組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請(qǐng)參考 ConfigProvider 組件。

名稱(chēng) 默認(rèn)值 描述
--van-skeleton-paragraph-height 16px -
--van-skeleton-paragraph-background var(--van-active-color) -
--van-skeleton-paragraph-margin-top var(--van-padding-sm) -
--van-skeleton-title-width 40% -
--van-skeleton-avatar-size 32px -
--van-skeleton-avatar-background var(--van-active-color) -
--van-skeleton-duration 1.2s -
--van-skeleton-image-size 96px
--van-skeleton-image-radius 24px -


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)