zoukankan      html  css  js  c++  java
  • 如何在微信小程序中使用骨架屏

    先上效果图


    骨架屏主要起到占位作用,向用户说明该区域有内容,有一定的心理准备。

    聊聊背景:刚上线一款小程序,随着上架的东西越来越多,微信小程序加载越来越慢,会出现一段时间的白屏(大概2-3s),这对用户体验上来讲特别不友好。所以在网上开始找这方面的资料,骨架屏主要分为两种方案,下面来说说这两种方案。

    1、为每个需要使用骨架屏的页面定制一套静态页面。这种方法缺点很明显,需要为每个页面单独定制,布局如果修改则需要同时修改两个页面,增加了维护成本。但这种特别适用于长列表,只需要做用户可见的部分,可在一定程度上增加响应速度。

    2、利用工具渲染页面获取指定的DOM节点和对应样式,生成灰色块覆盖在原来的样式结构上,从而实现骨架屏。这种方式简单易用好维护,个人感觉不太适合在长列表页面。https://github.com/jayZOU/skeleton 这款骨架屏组件轻量、方便、快捷,里面有教程,强烈推荐。

    使用哪一种方案,就要根据自己的项目情况来进行选择了。我采用的是第一种,因为这个页面加载的DOM节点太多了。从获取到数据后到渲染到页面这段时间有骨架屏做缓冲,效果倍棒。

    实现方法:

    1、根据原有页面的结构,在重写一个静态页面,把原来用来显示图片、文字的地方替换成有灰色背景色的块。

    <!--骨架屏  -->
    
    <view class="sort" wx:if="{{showSkeleton}}">
    
    <scroll-view scroll-y="true" class="sortlist" style="height:{{contentHeight-170}}rpx">
    
    <view class="sort-l" >
    
    <view class="sort-lgj"></view>
    
    </view>
    
    <view class="sort-l" >
    
    <view class="sort-lgj"></view>
    
    </view>
    
    <view class="sort-l" >
    
    <view class="sort-lgj"></view>
    
    </view>
    
    <view class="sort-l" >
    
    <view class="sort-lgj"></view>
    
    </view>
    
    <view class="sort-l" >
    
    <view class="sort-lgj"></view>
    
    </view>
    
    <view class="sort-l" >
    
    <view class="sort-lgj"></view>
    
    </view>
    
    </scroll-view>
    
    </view >
    
    <view class="sort" wx:else>
    
        这里是原来的页面
    
    </view >

    2、使用一个变量来控制骨架屏的显示或隐藏。

    onLoad: function(options) {
    
        var that = this
    
        wx.request({
    
            url:'xxxx', //请求地址
    
            data: { //发送给后台的数据
    
                xxxx: xxxx
    
            },
    
            header: { //请求头
    
            "Content-Type": "applciation/json"
    
            },
    
            method: "GET",
    
            success: function(res) {
    
                that.setData({
    
                    goodslist: data
    
                })
    
                that.setData({
    
                    // 数据渲染后
    
                    showSkeleton: false
    
                })
    
            },
    
            fail: function(err) {        
    
            }
    
        })
    
    }

    总结一下:数据较多的页面使用骨架屏可以大大提高用户体验。上文提到的骨架屏组件也是非常好用,几分钟就可以上手使用。

    初次接触骨架屏,有理解不到的地方还请多多指正。

  • 相关阅读:
    移动终端app测试点总结
    Android测试环境搭建(win7)
    Jenkins知识地图
    Jenkins快速上手
    接口测试总结
    性能测试总结(三)--工具选型篇
    性能测试总结(二)---测试流程篇
    性能测试总结(一)---基础理论篇
    网友评论诺基亚和Android
    手撕伪鸡汤,人事部门经理给你的八个职场忠告
  • 原文地址:https://www.cnblogs.com/ziqinchao/p/13096213.html
Copyright © 2011-2022 走看看