UNPKG

@tanzhenxing/zx-skeleton-item

Version:

zx-skeleton-item 骨架屏组件

162 lines (130 loc) 4.66 kB
# zx-skeleton-item 骨架屏项组件 `zx-skeleton-item`是骨架屏的子组件,用于构建不同形状和大小的骨架占位元素,通常与`zx-skeleton`组件配合使用,用于内容加载时显示的占位图形。 ## 使用方法 ### 基础用法 ```vue <template> <zx-skeleton-item variant="text" /> <zx-skeleton-item variant="circle" :size="40" /> <zx-skeleton-item variant="rect" :width="120" :height="40" /> </template> <script setup> import ZxSkeletonItem from '@/components/zx-skeleton-item/zx-skeleton-item.vue'; </script> ``` ### 组合使用 通常与`zx-skeleton`组件配合使用: ```vue <template> <zx-skeleton :loading="loading" animated> <template #template> <div style="display: flex; align-items: center;"> <zx-skeleton-item variant="circle" :size="40" /> <div style="margin-left: 12px;"> <zx-skeleton-item variant="text" style="width: 200px; margin-bottom: 8px;" /> <zx-skeleton-item variant="text" style="width: 150px;" /> </div> </div> </template> <template #default> <div class="content"> <!-- 实际内容 --> </div> </template> </zx-skeleton> </template> <script setup> import { ref } from 'vue'; import ZxSkeleton from '@/components/zx-skeleton/zx-skeleton.vue'; import ZxSkeletonItem from '@/components/zx-skeleton-item/zx-skeleton-item.vue'; const loading = ref(true); // 模拟数据加载 setTimeout(() => { loading.value = false; }, 2000); </script> ``` ## API ### Props | 参数 | 说明 | 类型 | 默认值 | |-----------|---------------------|-----------------------------------------------------|---------| | variant | 骨架屏的形状 | string: text / circle / rect / p / h1 / h3 / button / caption / image | text | | width | 宽度 | string / number | - | | height | 高度 | string / number | - | | size | 圆形骨架的大小,相当于同时设置width和height | string / number | - | | round | 是否为圆角 | boolean | false | | circle | 是否为圆形 | boolean | false | | active | 是否展示动画效果 | boolean | false | ### 内置类型(variant) - **text**: 文本行,默认样式 - **p**: 段落,比text略高 - **h1**: 大标题 - **h3**: 小标题 - **caption**: 说明文字 - **button**: 按钮 - **image**: 图片 - **circle**: 圆形 - **rect**: 矩形 ### 样式自定义 组件支持通过style和class自定义样式: ```vue <template> <zx-skeleton-item variant="text" style="width: 200px; margin-bottom: 8px;" class="custom-skeleton-item" /> </template> ``` ## 示例 ### 不同形状组合 ```vue <template> <view class="skeleton-demo"> <!-- 头像 + 文本 --> <view class="skeleton-item"> <zx-skeleton-item variant="circle" :size="50" /> <view class="skeleton-content"> <zx-skeleton-item variant="h3" style="width: 150px; margin-bottom: 12px;" /> <zx-skeleton-item variant="text" style="width: 240px;" /> </view> </view> <!-- 图片 + 文本 --> <view class="skeleton-item"> <zx-skeleton-item variant="image" :width="100" :height="100" /> <view class="skeleton-content"> <zx-skeleton-item variant="h3" style="width: 180px; margin-bottom: 12px;" /> <zx-skeleton-item variant="text" style="width: 240px; margin-bottom: 8px;" /> <zx-skeleton-item variant="text" style="width: 200px;" /> </view> </view> <!-- 按钮 --> <view class="skeleton-item"> <zx-skeleton-item variant="button" :width="120" :height="40" /> </view> </view> </template> <style> .skeleton-demo { padding: 20px; } .skeleton-item { display: flex; margin-bottom: 20px; } .skeleton-content { margin-left: 12px; flex: 1; } </style> ``` ### 带动画效果 为骨架屏项添加动画效果,可以设置active属性: ```vue <template> <zx-skeleton-item variant="text" :active="true" style="width: 200px;" /> </template> ``` ## 兼容性 - 支持H5、App以及各主流小程序平台 - 低版本设备可能不支持部分动画效果