首页 > 编程语言 >微信小程序自定义tabbar遮挡scroll-view问题

微信小程序自定义tabbar遮挡scroll-view问题

时间:2023-09-23 21:46:07浏览次数:59  
标签:自定义 微信 px 高度 let tabbar rpx deviceWidth wx

在使用小程序开发时,底部为自定义导航栏,在使用scroll-view滚动页面时,滚动到底部时最后一条或多条数据被导航栏遮挡,如下:

解决方案:

1.获取用户手机宽度和高度

let deviceWidth = wx.getSystemInfoSync().windowWidth;//获取屏幕宽度
let deviceHeight = wx.getSystemInfoSync().windowHeight;//获取屏幕高度

2.我的导航栏高度单位为rpx,那就需要将页面所有控件改为rpx,同时将获取的屏幕高度转为rpx

以下转自jiaojiaoiso

①rpx转px

// rpx 转换为 px ,传参类型是数字(Number)
export function rpxTopx(rpx) {
  let deviceWidth = wx.getSystemInfoSync().windowWidth; //获取设备屏幕宽度
  let px = (deviceWidth / 750) * Number(rpx)
  return Math.floor(px);
}

②px转rpx

// px 转换为 rpx ,传参类型是数字(Number)
export function rpxTopx(px) {
  let deviceWidth = wx.getSystemInfoSync().windowWidth; //获取设备屏幕宽度
  let rpx = (750 / deviceWidth) * Number(px)
  return Math.floor(rpx);
}

转换完成之后,设置scroll-view高度,将屏幕高度减去距离顶部的高度,再减去导航栏高度即可。

3.单位为px的,获取完高度的直接减

4.代码

js文件:

async onl oad(options) {
    var that = this;
    //获取系统的参数,scrollHeight数值,微信必须要设置style:height才能监听滚动事件
    let deviceWidth = wx.getSystemInfoSync().windowWidth;
    let deviceHeight = wx.getSystemInfoSync().windowHeight;
    let rpx = (750 / deviceWidth) * Number(parseInt(deviceHeight));
    that.setData({
      scrollHeight: Math.floor(rpx)-240-130//240为距离顶部高度,130为距离底部高度,即导航栏高度
    });
}

wxml文件:

  <view style="position: fixed;width: 100%;top: 240rpx;">
    <scroll-view scroll-y="true" style="width: 100%;height: {{scrollHeight}}rpx;">
      <view wx:for="{{listData}}" wx:for-item='item' style="padding:10px;border:#8a8a8a solid 1px; font-size: 10px;color: darkgrey;">
          <view><text>项目名称:</text></view>
          <view><text>立项批复日期:</text></view>
          ...
      </view>
    </scroll-view>

5.结果

 

标签:自定义,微信,px,高度,let,tabbar,rpx,deviceWidth,wx
From: https://www.cnblogs.com/yuxuan-light-of-Taihu-Lake/p/17725044.html

相关文章

  • 自定义属性编辑器
    1,编写实体类Address.javapackagecom.mashibing.selfEditor;publicclassAddress{privateStringprovice;privateStringcity;privateStringtown;publicStringgetProvice(){returnprovice;}publicvoidsetProvice(Stringprovice)......
  • 微信小程序 catch:tap bind:tap 的区别
    这二个都是点击事件,一个是阻止冒泡:catch:tap,bind:tap会向上冒泡。一般场景: 一个列表:1、点击行,会弹出相关详情信息,2、点击行中的按钮会执行相关的操作。 点按钮会出来二个窗口,按钮向上冒泡了,二个事件都被执行,所以会执行二次。......
  • 微信小程序开发手册(一)
    微信小程序中的this.setData()以前竟然都没注意这个:我们可能经常性的写出这样的data:data:{listt:[{text:"本周阻止辅导员职业技能大赛生情熟知和谈心谈话比赛",date:"2020.03.03-2020.03.20",mxc_gou:''},{text......
  • 自定义标签完成解析工作
    1、创建实体类User.javapackagecom.mashibing.selftag;publicclassUser{privateStringusername;privateStringemail;privateStringpassword;publicUser(){}publicUser(Stringusername,Stringemail,Stringpassword){this.use......
  • uniapp,微信小程序确认收货组件的使用
    直接上代码//拉起确认收货组件if(wx.openBusinessView){wx.openBusinessView({businessType:'weappOrderConfirm',extraData:{//merchant_id:'1230000109',//用户交易商户号//merchant_trade_no:"1234323JKHDFE1243252",//商户......
  • elasticsearch 自定义字典
    ......
  • Vue-插槽及自定义事件分发
    一.插槽slot在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。<slot> 元素是一个插槽出口 (slotoutlet),标示了父元素提供的插槽内容 (slotcontent)将在哪里被渲染。 插槽就好比一个占位符,它不是解决页面必须元素的位置,而是解决未......
  • AES-256-ECB PKCS7Padding 解密 微信退款接口
    微信退款通知https://pay.weixin.qq.com/wiki/doc/api/wxpay/ch/pay/OfficialPayMent/chapter8_8.shtml需要的pom<!--https://mvnrepository.com/artifact/commons-codec/commons-codec--> <dependency> <groupId>commons-codec</groupId> <......
  • 【Java 基础篇】Java 比较器排序:精通自定义对象排序
    在Java编程中,排序是一个非常常见且重要的操作。Java提供了多种排序机制,其中之一就是使用比较器(Comparator)进行排序。比较器允许您自定义对象的排序方式,使您能够实现各种排序需求,从简单的对象排序到复杂的多属性排序。本篇博客将从入门到高级,详细介绍Java比较器排序的使用。什......
  • ubuntu上使用微信界面太小
    一开始:小小的也很可爱呢后来使用命令调整envWINEPREFIX="$HOME/.ukylin-wine/wechat"/usr/bin/ukylin-winewinecfg 进入wine设置界面将分辨率调高,设置虚拟桌面,就可以勉勉强强用了。 还是很难用!!!哭......