1.0.1 • Published 5 years ago
miniprogram-skeleton-component v1.0.1
miniprogram-skeleton-component
绘制小程序骨架屏,轻量、方便、快捷
- 小程序骨架屏组件原作者:邹世杰
 - 小程序骨架屏组件原github地址: https://github.com/jayZOU/skeleton
 
快速上手
引入骨架屏组件
//index.json
//引入骨架屏组件
{
  "usingComponents": {
    "skeleton": "/component/skeleton/skeleton"
  }
}
//index.js
//初始化默认的数据,用于撑开页面结构,让骨架屏可以获取到整体的页面结构
Page({
	data: {
		motto: 'Hello World',
		userInfo: {
			avatarUrl: 'https://wx.qlogo.cn/mmopen/vi_32/SYiaiba5faeraYBoQCWdsBX4hSjFKiawzhIpnXjejDtjmiaFqMqhIlRBqR7IVdbKE51npeF6X1cXxtDQD2bzehgqMA/132',
			nickName: 'jayzou'
		},
		lists: [
			'aslkdnoakjbsnfkajbfk',
			'qwrwfhbfdvndgndghndeghsdfh',
			'qweqwtefhfhgmjfgjdfghaefdhsdfgdfh',
		],
		showSkeleton: true   //骨架屏显示隐藏
	},
	onLoad: function () {
		const that = this;
		setTimeout(() => {     //3S后隐藏骨架屏
			that.setData({
				showSkeleton: false
			})
		}, 3000)
	}
})<!--引入骨架屏模版 -->
<skeleton wx:if="{{showSkeleton}}"></skeleton>
<!--index.wxml-->
<!--给页面根节点class添加skeleton, 用于获取当前页面尺寸,没有的话就默认使用屏幕尺寸-->
<view class="container skeleton">
    <view class="userinfo">
        <block>
	        <!--skeleton-radius 绘制圆形-->
            <image class="userinfo-avatar skeleton-radius" src="{{userInfo.avatarUrl}}"
                   mode="cover"></image>
             <!--skeleton-rect 绘制矩形-->
            <text class="userinfo-nickname skeleton-rect">{{userInfo.nickName}}</text>
        </block>
    </view>
    <view style="margin: 20px 0">
        <view wx:for="{{lists}}" class="lists">
            <icon type="success" size="20" class="list skeleton-radius"/>
            <text class="skeleton-rect">{{item}}</text>
        </view>
    </view>
    <view class="usermotto">
        <text class="user-motto skeleton-rect">{{motto}}</text>
    </view>
    <view style="margin-top: 200px;">
        aaaaaaaaaaa
    </view>
</view>API
| Options | Type | Required | Default | Description | 
|---|---|---|---|---|
| selector | String | No | skelton | 渲染节点的标识前缀,比如selector="skeleton",那么页面根节点就是class="skeleton"绘制矩形就是class="skeleton-rect",圆形就是class="skeleton-radius" | 
| loading | String | No | spin | 骨架屏渲染时的动画,有spin和chiaroscuro | 
| bgcolor | String | No | #FFF | 骨架屏背景 | 
Note
业务侧可以自行判断数据是否加载完成,进而隐藏骨架屏,比如
<skeleton selector="skeleton" wx:if="{{showSkeleton}}"></skeleton>
以最小节点原则添加相应的class,比如
<view class="box skeleton-rect">这是有margin和padding属性的文案</view>
这里不要给view添加class,不然绘制区域会大很多,应该改成这样
<view class="box"><text class="skeleton-rect">这是有margin和padding属性的文案</text></view>
笔者在原组件基础上进行了npm封装,感谢原作者的贡献,如有需要该仓库可随时下线。