Giter VIP home page Giter VIP logo

skeleton's Introduction

miniprogram-skeleton

绘制小程序骨架屏,轻量、方便、快捷

特性

  1. 运行时渲染,支持动态生成骨架屏
  2. 支持分块渲染,渐进式展示页面
  3. 支持多种骨架屏动画
  4. 支持npm

示例

skeleton

Use

一、安装和引入

1.安装组件:

npm i @best-components/miniprogram-skeleton

2.引入skeleton自定义组件

{
  "usingComponents": {
    "skeleton": "@best-components/miniprogram-skeleton"
  }
}

小程序中npm的配置及使用:

  • 在微信开发者工具中,设置 —> 项目设置—> 勾选使用npm模块。
  • 在微信开发者工具中,工具 —> 构建npm,构建完成会生成 miniprogram_npm 文件夹,项目用到的npm包都在这里。
  • 按照页面的使用路径,从 miniprogram_npm 引入需要的包。

二、使用骨架屏组件

1.在wxml页面需要用到的地方使用,如下:

<!--引入骨架屏模版 -->
<skeleton selector="sk"
          unit="px"
          region="{{region}}"></skeleton>

<!--index.wxml-->
<!--给页面根节点class添加skeleton, 用于获取当前页面尺寸,没有的话就默认使用屏幕尺寸-->
<view class="box sk">
    <view class="logo">
        <image class="img sk-header-radius" src="{{header.logo}}"></image>
    </view>
    <view class="title">
        <text class="sk-header-rect">{{header.title}}</text>
    </view>
    <parent feature="{{feature}}"></parent>
    <view class="item">
        <view class="title_sub">非骨架屏生成区域</view>
        <view>这是一块没有骨架屏遮盖区域</view>
    </view>
</view>

2.在js页面需要用到的地方使用,如下:

//index.js
//初始化默认的数据,用于撑开页面结构,让骨架屏可以获取到整体的页面结构
Page({
	data: {
		region: {		//骨架屏区域
			header: true,
			lists: true
		},
		header: {
			logo: '../../images/logo.png',
			title: 'skeleton'
		},
		feature: {
			title: '特性',
			lists: [
				'1.运行时渲染,支持动态生成骨架屏',
				'2.支持分块渲染,渐进式展示页面',
				'3.支持多种骨架屏动画',
				'4.支持npm',
			]
		}
	},
	onLoad: function () {
    //隐藏header区域的骨架屏
		setTimeout(() => {
			that.setData({
				'region.header': false
			})
		}, 2000)
    //隐藏lists区域的骨架屏
		setTimeout(() => {
			that.setData({
				'region.lists': false
			})
		}, 3000)
	}
})

API

Options Type Required Default Description
selector String No skelton 渲染节点的标识前缀,比如selector="sk",那么页面根节点就是class="sk"绘制矩形就是class="sk-region-rect",圆形就是class="sk-region-radius"
unit String No px 骨架屏单位,默认px
region Object Yes 骨架屏渲染区域,可按需分块展示/隐藏骨架屏

Note

以最小节点原则添加相应的class,比如 <view class="box skeleton-rect">这是有margin和padding属性的文案</view> 这里不要给view添加class,不然绘制区域会大很多,应该改成这样 <view class="box"><text class="skeleton-rect">这是有margin和padding属性的文案</text></view>

skeleton's People

Contributors

akiq2016 avatar habc0807 avatar jayzou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skeleton's Issues

关于动态加载时候获取不到的问题

  onShow: function (options) {
      this.getList()
      this.setData({
        showSkeleton: false
      })
  },
 <view wx:for="{{list}}"  wx:key="unique" class="list-wrap skeleton-rect">
....
</view>

如列表的骨架,是需要先获取到数据源,才能获取dom节点。上面这段代码,skeleton组件skeletonRectLists获取不到节点(超时或其他原因),骨架图就显示不了

在自定义组件中使用

请问页面引入的自定义组件如何使用比较好,我直接将这些方法和data写到自定义组件里,效果很差

自定义组件中使用的问题

发现有一种情况下似乎无法正常使用:假设cul是一个自定义组件,cli是一个自定义组件,当cul与cli存在组件间关系的时候,获取到cli组件的宽高和位置信息全部为0。大概看了一下,好像是由于当两个组件存在关系时,skeleton获取各个节点信息时,cli还没有初始化。这种情况有什么好的解决方法么?

https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/relations.html

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.