盈彩体育注册(中国)有限公司
盈彩体育注册(中国)有限公司 您所在的位置:网站首页 盈彩体育注册(中国)有限公司 【已废弃】如何在微信、支付宝小程序内实现骨架屏效果(建议使用官方工具自带的骨架屏功能)

【已废弃】如何在微信、支付宝小程序内实现骨架屏效果(建议使用官方工具自带的骨架屏功能)

2024-04-25 18:28:13| 来源: 网络整理

新版本开发者工具已支持骨架屏了,可自行尝试下~首先了解下什么是骨架屏?

骨架屏就是在页面数据尚未加载前先给用户展示出页面的大致结构,直到请求数据返回后再渲染页面,补充进需要显示的数据内容。常用于文章列表、动态列表页等相对比较规则的列表页面。 很多项目中都有应用饿了么h5版本,知乎,facebook等网站中都有应用。

老规矩,先看我们的效果图:

以下图举例,常用饿了么的童鞋,应该看到过饿了么的这个首页预加载图的效果:饿了么h5实现方案

咱们来聊聊小程序的实现方案:1.最简单最快捷最暴力的,直接让设计一张图片盖上去,当loading使用。

举例:饿了么的订单页面,查看了下源码,是使用的SVG的图

2.前端使用view写死一套数据(缺点很明显,假如页面布局有修改的话,那么除了修改业务代码之外还需要额外修改骨架屏,增加了维护的成本)

举例:简单写了个代码片段:https://developers.weixin.qq.com/s/ZAuYzHmX7ObC

3.页面Data里写死一套默认数据,使用小程序的wx.createSelectorQuery().selectAll 选择了所有要渲染的矩形和圆形节点,在页面中,使用循环,遍历出所有的节点,再加上样式。基本原理就是在组件初始化时,设置其绝对定位,大小为整个屏幕大小然后用节点查询方法,找到类名等于skeleton的元素,并设置组件的背景的位置及大小和元素的一致,覆盖这个元素。用节点查询方法,找到所有的类名等于skeleton-radius 元素,并将它们的位置及大小信息加入到sklection-radius-Arr数组中,在wxml中用wx:for循环渲染出来(也是绝对定位)用节点查询方法,找到所有的类名等于skeleton-rect 元素,并将它们的位置及大小信息加入到sklection-rect-Arr数组中,在wxml中用wx:for循环渲染出来(也是绝对定位)

当然啦,这里还有一些判断,还可以设置屏幕上提示是旋转小圈圈还是背景色渐变提醒等,都是一些比较细节的东西,就不细说。具体代码参考:jayZOU,这里有具体源码以及实现逻辑。

那么到这就完了吗?当然木有,现在说下最后一种方案

4.如何更好的把骨架屏代码嵌入到业务里面,是否可以在接口请求成功后,先渲染出一套接口返回的数据匹配的骨架,再展示给用户看呢,减少用户查看白屏(loading)时间。(缺点是如果请求挂掉,骨架屏是不会渲染出来的)

这是我们线上版本效果示例图:首先来看 如何操作:整个前边部分跟jayZOU的逻辑思路一样,使用wx.createSelectorQuery 获取到相关节点进行渲染操作,但是我们把默认数据这一栏更改为动态数据,并且兼容修复了一部分bug。核心代码就是自定义组件内抛出的isNodes和isComplete属性

//wxml


【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 盈彩体育注册(中国)有限公司 版权所有 豫ICP备16040606号-1