[微信小程序]通过计算其他view的高度,动态给定scroll-view的高度

简介: WXML节点信息API 微信小程序的开发文档有个很重要的api wx.createSelectorQuery() 具体大家还是看一下文档,我下面是直接上代码解说; wx.createSelectorQuery()文档 案例中的布局 这里页面上部分有三个view,它们的class分别是.

WXML节点信息API

微信小程序的开发文档有个很重要的api

wx.createSelectorQuery()

具体大家还是看一下文档,我下面是直接上代码解说;

wx.createSelectorQuery()文档

案例中的布局

这里写图片描述

这里页面上部分有三个view,它们的class分别是.kill-order、.bannerType、.search;
然后接下来的是一个class=content的scroll-view
下面直接贴代码给你们瞧瞧:

wxml
<view class="pageMain">
    <button class='kill-order' bindtap='openqr'>
        <image src='{{qricon}}' />
        <view>
            <text>销核订单</text>
        </view>
    </button>
    <view class='bannerType'>
        <view bindtap='tapAll' style='{{tapAllCss}}'>
            <text>全部订单</text>
        </view>
        <view bindtap='tapNoKill' style='{{tapNoKillCss}}'>
            <text>未销核</text>
        </view>
        <view bindtap='tapKilled' style='{{tapKilledCss}}'>
            <text>已销核</text>
        </view>
        <view bindtap='tapRefund' style='{{tapRefundCss}}'>
            <text>退款</text>
        </view>
    </view>
    <view class='search'>
        <view class='searchItem'>
            <image src='{{searchicon}}' />
            <input placeholder='请输入订单号'></input>
        </view>
    </view>
    <scroll-view class='content' bindscrolltolower="nextPage" scroll-y="true" style='height:{{scrollViewHeith}}px'>
        <block wx:for="{{orderData.content}}" wx:for-index="index" wx:for-item="item">
            <view class='item'>
                <view class='title'>
                    <text>{{item.orderName}}</text>
                </view>
                <view class='title'>
                    <text>用户微信昵称:{{item.wxNickname}}</text>
                </view>
                <view class='orderInfo'>
                    <view class='orderDedail'>
                        <text class='orderNum'>订单号:{{item.orderNum}}</text>
                        <text class='orderTime'>下单时间:{{item.createTime}}</text>
                    </view>
                    <view class='orderStatus'>
                        <text wx:if="{{item.orderStatus == 0}}">未付款</text>
                        <text wx:if="{{item.orderStatus == 1}}">未销核</text>
                        <text wx:if="{{item.orderStatus == 2}}">已销核</text>
                        <text wx:if="{{item.orderStatus == 3}}">退款</text>
                    </view>
                </view>
                <view class='orderDedail'>
                    <text>价格:{{item.orderPrice}}元</text>
                </view>
            </view>
        </block>
    </scroll-view>

</view>

在这里的话,实例中页面上面部分的三个view(.kill-order、.bannerType、.search),在设计稿中都是有固定的高度,但是用了微信小程序里面的rpx单位进行自动适配不同机型的尺寸;页面底下的scroll-view的高度,却是动态的,但是在小程序里面,我们需要给它一个固定高度,怎么办呢?
这里的话,我使用最蠢的办法,使用api,wx.createSelectorQuery()分别获取三个view(.kill-order、.bannerType、.search)的高度并求和(useHeith),再使用wx.getSystemInfo()获取windowHeight(可使用窗口高度,文档地址wx.getSystemInfo(OBJECT)),最后得出scroll-view的高度(windowHeight - useHeith),然后通过数据绑定的方式,给scroll-view指定高度px;

下面是js代码(代码写的有点恶心,因为是异步的)

        //search-view高度计算
        let qSearch = wx.createSelectorQuery();
        qSearch.select('.search').boundingClientRect()
        qSearch.exec(function (res) {
            that.setData({
                useHeith: that.data.useHeith + res[0].height
            })
            // killorder-view高度
            let qKillOrder = wx.createSelectorQuery();
            qKillOrder.select('.kill-order').boundingClientRect()
            let result = qKillOrder.exec(function (resk) {
                that.setData({
                    useHeith: that.data.useHeith + resk[0].height
                })
                // bannerType-view高度
                let qBannerType = wx.createSelectorQuery();
                qBannerType.select('.bannerType').boundingClientRect()
                qBannerType.exec(function (resb) {
                    that.setData({
                        useHeith: that.data.useHeith + resb[0].height
                    })
                    wx.getSystemInfo({
                        success: function (res) {
                            that.setData({
                                canUseWidth: res.windowWidth,
                                canUseHeith: res.windowHeight,
                                scrollViewHeith: res.windowHeight - that.data.useHeith
                            })
                        },
                    })
                })
            })
        })//这一串都是为了设置scrollview高度

效果

效果还行

这里写图片描述

本次demo使用到的wxml,wss,js文件
csdn原文

目录
相关文章
|
5月前
|
JSON 小程序 JavaScript
小程序数据渲染根据返回值计算百分比并且显示
小程序数据渲染根据返回值计算百分比并且显示
26 0
|
4月前
|
小程序 前端开发
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
|
1月前
|
小程序 前端开发 定位技术
【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)
【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)
|
1月前
|
小程序
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
|
5月前
|
小程序 容器
小程序view标签内数字/字母显示不换行
小程序view标签内数字/字母显示不换行
107 0
|
8月前
|
小程序 JavaScript
整理微信小程序控制view隐藏显示的五种方法
整理微信小程序控制view隐藏显示的五种方法
624 0
|
8月前
|
小程序 开发者
微信小程序-view组件
内置组件就是,小程序为我们封装好的组件,开发者可以通过组合这些组件进行快速开发。
161 0
|
13天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
13天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
13天前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。

热门文章

最新文章