zoukankan      html  css  js  c++  java
  • 小程序中底部栏高度适配

    最近接了几个小程序,在开发过程中遇到了比较常见的兼容适配问题,特此记录下,便于下次开发避坑;

    不同机型的底部栏高度是不同的,iphoneX和XR这两个比较特殊些,一般当前设备的具体信息 可通过  wx.getSystemInfoSync() 获取到:

     该对象中model为设备机型,可用来判断当前设备的具体型号;

    今天要说的是设备底部的高度该怎么获取才准确,也看了网上很多写法,都不太符合需求,

     去结算的这一栏高度为96rpx,默认是固定定位距离底部98rpx,在真机中并不好使,会出现上浮或者下沉的现象,正确操作应为定位的bottom动态计算才行,一开始用的是

    statusBarHeight这个字段来获取,发现还是不对,正确思路应为  通过  screenHeight  - safeArea.bottom ,此时得到的bar高度为px,需要通过 750 / screenWidth 将px换算为rpx,然后加上 去结算这一块高度96,这样是正确的,iphoneX及XR中,由于底部栏一般约为68rpx, 所以需要在刚才基础上单独减去20rpx,具体代码如下:
    <view class="fixed-bar"style="bottom:{{ isIpx ? barHeight - 20 : barHeight }}rpx;"></view>
    .fixed-bar {
      position: fixed;
      left: 0;
      right: 0;
      bottom: 98rpx; //此为默认值。可不写
      background: #fff;
      z-index: 100;
    }
    //app.js中   
    var systemInfo = wx.getStorageSync("community");    
    var screenH = systemInfo.screenHeight;

    var model = systemInfo.model;
      //判断是否是iphoneX 
    this.globalData.isIpx = model.indexOf("iPhone X") > -1 || model.indexOf("unknown<iPhone") > -1;
    var barHeight = screenH - systemInfo.safeArea.bottom; //此时获取的bar高度单位为px this.globalData.barHeight = barHeight * (750 /
    systemInfo.screenWidth ); //px转化为rpx

    //当前.js
      onLoad: function() {
        this.setData({
          barHeight: app.globalData.barHeight + 96
        })
      }

    如有问题,还请及时留言指正,共同学习共同进步;

  • 相关阅读:
    单例模式
    grails2.3.11第二课
    grails2.3.11第一课
    【安全】requests和BeautifulSoup小试牛刀
    【解决】国内访问github过慢
    基于Ubuntu14.10的Hadoop+HBase环境搭建
    基于adt-bundle的Android开发环境搭建
    【解决】SAE部署Django1.6+MySQL
    【解决】Django项目废弃SQLite3拥抱MySQL
    【OpenGL】画立方体
  • 原文地址:https://www.cnblogs.com/fmixue/p/14644861.html
Copyright © 2011-2022 走看看