微信骨架屏

微信小程序骨架屏文档

1、生成相应骨架屏文件

点击自动生成按钮
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击了确定后会自动生成两个文件,然后在文件中引入:

...\mooc-home-work\pages\home\home.wxml 引入模板
<import src="home.skeleton.wxml"/>
<template is="skeleton" wx-if="{{loading}}" />
注意:自动生成的wx-if有错误,需要修改成wx:if...mooc-home-work\pages\home\home.wxss 中引入样式
@import "./home.skeleton.wxss";

2、控制加载时机

在home.js文件中

Page({
    data: {
        ...
        loading:true //是否加载骨架屏,这里的loading对应的是上文中的wx-if="{{loading}}"
    },
    onLoad:async function (options) {
        await this._getServiceList()
        await this._getCategoryList()
        this.setData({
            loading:false //数据加载结束后,隐藏骨架屏
        })
    },
需要生成骨架屏的页面

在这里插入图片描述

生成后的骨架屏

在这里插入图片描述
生成后的骨架屏,你会发现标记红色框框的地方没有生成,这个是微信开发工具的一个小Bug,swiper标签的没有生成。
我们可以先将没有生成的代码注释了,替换成一些简单的View,然后生成后在将原来的代码取消注释。

<import src="home.skeleton.wxml"/>
<template is="skeleton" wx:if="{{loading}}" />
<view class="container">
    <i-tabs tabs="{{tabs}}" bind:change="handleTabChange">
        <view slot="extend">
            <view class="category">
                <image style="width:80%;height:200rpx"></image>
<!--                <swiper style="height:150rpx" display-multiple-items="{{2}}" next-margin="60rpx">-->
                <!--                    <swiper-item wx:for="{{categoryList}}"-->
                <!--                                 wx:key="index"-->
                <!--                                 bind:tap="handleCategoryChange"-->
                <!--                                 data-id="{{item.id}}">-->
                <!--                        <view class="category-swiper-item">-->
                <!--                            <text class="category-name">{{item.name}}</text>-->
                <!--                        </view>-->
                <!--                    </swiper-item>-->
                <!--                </swiper>-->
            </view>
        </view>
        <view slot="panel">
            <view wx:for="{{serviceList}}" wx:key="index">
                <i-service-preview service_item="{{item}}"></i-service-preview>
            </view>
        </view>
    </i-tabs>

</view>

然后重新生成骨架屏
在这里插入图片描述
生成骨架屏后,把代码恢复原样

<import src="home.skeleton.wxml"/>
<template is="skeleton" wx:if="{{loading}}" />
<view class="container">
    <i-tabs tabs="{{tabs}}" bind:change="handleTabChange">
        <view slot="extend">
            <view class="category">
                <swiper style="height:150rpx" display-multiple-items="{{2}}" next-margin="60rpx">
                    <swiper-item wx:for="{{categoryList}}"
                                 wx:key="index"
                                 bind:tap="handleCategoryChange"
                                 data-id="{{item.id}}">
                        <view class="category-swiper-item">
                            <text class="category-name">{{item.name}}</text>
                        </view>
                    </swiper-item>
                </swiper>
            </view>
        </view>
        <view slot="panel">
            <view wx:for="{{serviceList}}" wx:key="index">
                <i-service-preview service_item="{{item}}"></i-service-preview>
            </view>
        </view>
    </i-tabs>

</view>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序骨架是一种提高小程序加载速度和用户体验的技术,它通过在页面加载时先展示一个简单的骨架,让用户感受到页面正在加载中,避免了空白页面的尴尬。 以下是微信小程序骨架的详细使用方法: 1. 安装插件 在小程序项目中使用骨架需要安装插件,可以使用官方提供的插件:wechat-miniprogram/skeleton,具体安装方法如下: ``` npm install @wechat-miniprogram/skeleton --save ``` 2. 引入骨架组件 在需要使用骨架的页面中引入骨架组件,例如: ``` <import src="../../miniprogram_npm/@wechat-miniprogram/skeleton/index.wxml" /> <template is="skeleton" data="{{loading: isLoading}}"></template> ``` 3. 定义骨架模板 在页面中定义骨架模板,例如: ``` <template name="skeleton"> <view class="skeleton-container" wx:if="{{loading}}"> <view class="skeleton-item"></view> <view class="skeleton-item"></view> <view class="skeleton-item"></view> </view> </template> ``` 其中,skeleton-container 为骨架容器,skeleton-item 为骨架单元,可以根据实际需求定义。 4. 控制骨架显示和隐藏 在页面的 onLoad 函数中设置 isLoading 变量为 true,页面加载完成后再将 isLoading 变量设置为 false,例如: ``` Page({ data: { isLoading: true }, onLoad: function () { setTimeout(() => { this.setData({ isLoading: false }) }, 2000) } }) ``` 5. 自定义骨架样式 可以通过在 app.wxss 文件中定义全局样式或在页面的 wxss 文件中定义局部样式来自定义骨架的样式,例如: ``` /* 全局样式 */ .skeleton-container { background-color: #f5f5f5; padding: 20rpx; display: flex; flex-direction: column; } .skeleton-item { height: 100rpx; margin-bottom: 20rpx; background-color: #fff; } /* 局部样式 */ .page-skeleton .skeleton-container { padding: 30rpx; } .page-skeleton .skeleton-item { height: 120rpx; } ``` 以上就是微信小程序骨架的详细使用方法,通过使用骨架可以提高小程序的用户体验和加载速度,让用户更加愉悦地使用小程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值