更新记录

1.0.0(2026-07-15)

1.0.0

支持文本流光、列表、宫格、瀑布流等预设,适配 Android、iOS、鸿蒙。(支持蒸汽模式,蒸汽模式建议用hbuilderx alpha 5.21+)


平台兼容性

uni-app x(5.21)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - -

una-app-skeleton

una-app-skeleton 是一个面向 uni-app x 的骨架屏组件,核心使用 uvue 实现,适合 App Android、iOS、鸿蒙端的首屏加载、模块加载和长列表占位。

特性

  • 支持 bannerinfotextmenulistwaterfallcustom 多种预设
  • 支持文本长条从左到右的窄流光动画,动画由 UTS 定时器驱动,不使用 @keyframes
  • 支持动画开关,animated=false 时展示静态骨架屏
  • 支持包裹真实内容:loading=false 时自动渲染默认插槽
  • 支持 scroll-view 页面首屏骨架
  • 长列表分页场景可只用于首屏加载,不接管分页逻辑
  • 避免 @keyframesrow-gaprpx100vh 等 App uvue CSS 易报错写法

基础用法

<template>
    <una-app-skeleton :loading="loading" preset="list" :rows="2">
        <view v-for="item in list" :key="item.id">
            <text>{{ item.title }}</text>
        </view>
    </una-app-skeleton>
</template>

<script setup lang="uts">
const loading = ref<boolean>(true)
const list = ref<Array<any>>([])

onMounted(() => {
    setTimeout(() => {
        loading.value = false
    }, 1200)
})
</script>

预设类型

<una-app-skeleton preset="banner" bannerHeight="118px" />
<una-app-skeleton preset="info" :paragraphLines="3" />
<una-app-skeleton preset="text" :textLines="4" />
<una-app-skeleton preset="menu" :menuCount="8" />
<una-app-skeleton preset="list" :rows="2" thumbnailPosition="left" />
<una-app-skeleton preset="waterfall" :waterfallRows="2" />
<una-app-skeleton preset="custom" :customCount="4" />

动画控制

<una-app-skeleton preset="list" mode="flow" :animated="true" />
<una-app-skeleton preset="list" mode="none" :animated="false" />

当前流光动画只作用在文本长条形骨架上,例如文本段落、列表标题、列表描述、菜单文字、瀑布流文字等。图片块、头像、图标等区域保持静态底色,避免加载态过度闪烁。

Props

参数 说明 类型 默认值
loading 是否显示骨架屏 Boolean true
preset 骨架预设:banner / info / text / menu / list / waterfall / custom String list
rows list 行数 Number 2
card 是否使用白色卡片容器 Boolean true
animated 是否启用流光动画 Boolean true
mode 动画模式:flow / none,兼容旧值 steam String flow
showTitle 是否显示骨架标题占位 Boolean false
paragraphLines info / list 文本行数 Number 3
textLines text 文本行数 Number 4
menuCount menu 宫格数量 Number 8
waterfallRows waterfall 每列数量 Number 2
customCount custom 单元数量 Number 4
avatar list 是否显示头像 Boolean false
thumbnail list 是否显示缩略图 Boolean true
thumbnailPosition 缩略图位置:left / right String left
avatarSize 头像尺寸 String 40px
menuIconSize 菜单图标尺寸 String 40px
thumbnailWidth 缩略图宽度 String 78px
thumbnailHeight 缩略图高度 String 78px
bannerHeight banner 高度 String 118px
titleWidth 标题占位宽度 String 78px
titleHeight 标题占位高度 String 15px
lineHeight 文本占位高度 String 10px
gap list 行间距 String 10px
radius 骨架块圆角 String 6px
baseColor 基础色 String #F0F2F5
highlightColor 流光高亮色 String #FFFFFF

分页建议

骨架屏建议只用于首屏空列表加载:

const firstLoading = ref<boolean>(true)
const loadingMore = ref<boolean>(false)

已有列表数据后加载下一页时,保留真实列表,只在底部显示“加载中”。不要分页时整页切回骨架,否则会闪屏。

兼容说明

  • 基于 uni-app x / uvue
  • 样式单位使用 px
  • 未使用 @keyframes
  • 未使用 linear-gradient
  • 未使用 100vh
  • 未使用 display: block
  • 适合 App Android、iOS、鸿蒙端使用

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: