背景

  • 公司项目开发中,发现iPhoneX上吸底元素存在被小黑条遮挡的问题

原因

  • 在苹果 iPhoneX 、iPhone XR等机型上,物理Home键被取消,改为底部小黑条替代home键功能,从而导致吸底元素会被小黑条遮挡覆盖的问题

解决方案

  1. 使用已知底部小黑条高度为34px/68rpx机型适配(不建议)
  2. 使用微信官方API,getSystemInfo()中的safeArea对象进行适配(建议)
  3. 使用苹果官方推出的css函数env()、constant()来适配 (建议)

安全区域

看看图就明白了,中间绿色区域即为安全区域。也就是说,适配安全区域也就是让小程序或者H5的内容显示在绿色区域部分。

#第一种,使用已知安全距离进行适配34px/68rpx(不建议)
小程序app.js文件中判断获取当前设备机型,如果是iphoneX系列机型,那么设计到底部时,则考虑设置底部按钮或选项卡的margin-bottom、padding-bottom、height等,或者添加一个div来占位小黑条的位置。
#第二种 getSystemInfo()

  • 1 使用wx.getSystemInfoSync()中的screenHeight和safeArea对象的bottom属性判断
    这里使用screenHeight是获取屏幕的高度,因为bottom是以屏幕左上角为原点开始计算的,所以需要的是屏幕高度,对比screenHeight和safeArea,如果相等则说明不需要适配,不相等则需要适配。
    `const isIPhoneX = () => {

    let screenHeight = wx.getSystemInfoSync().screenHeight

    let bottom = wx.getSystemInfoSync().safeArea.bottom

    return screenHeight !== bottom

}###注意 isIPhoneX 返回true则代表不想等,需要进行适配 底部选项卡或吸底元素样式判断底部选项卡或吸底元素`

  • 2 safeArea对象获取底部小黑条的高度,全局存储使用

    #第三种 使用苹果官方推出的css函数env()、constant()来适配 (建议)我也用的这种
  • env()和constant(),是IOS11新增特性,Webkit的css函数,用于设定安全区域与边界的距离,有4个预定义变量:
    • safe-area-inset-left:安全区域距离左边边界的距离
    • safe-area-inset-right:安全区域距离右边边界的距离
    • safe-area-inset-top:安全区域距离顶部边界的距离
    • safe-area-inset-bottom :安全距离底部边界的距离
这里我们只需要关注safe-area-inset-bottom就行了

而env()和constant()函数有个必要的使用前提,H5网页设置viewport-fit=cover的时候才生效,小程序里的viewport-fit默认是cover

  • 使用案列

    下图为一个吸底元素,在iphoneX真机上小黑条会遮挡,大概长这样

  • 解决方案
    `.detailBotoom{

    position: fixed;

    bottom: 0;

    width: 100%;

    display: flex;

    height: calc(96rpx+ constant(safe-area-inset-bottom));///兼容 IOS<11.2/

    height: calc(96rpx + env(safe-area-inset-bottom));///兼容 IOS>11.2/

    background: #fff;

    border-top: 1rpx solid #eaeef1;

    z-index: 99;

    padding-bottom: constant(safe-area-inset-bottom);///兼容 IOS<11.2/

    padding-bottom: env(safe-area-inset-bottom);///兼容 IOS>11.2/

}`

注意 constant与env顺序不能改变,先constant再env

iphoneX底部小黑条适配问题相关推荐

  1. H5页面适配iphoneX底部小黑条遮盖内容

    iphoneX取消了物理按键,改为底部小黑条,这也在页面开发的过程中,会出现底部内容被小黑条遮盖的现象,影响页面效果, 我们可以这也解决 1:增加viewport属性 viewport-fit=&qu ...

  2. 微信小程序适配iPhoneX底部小黑条

    微信小程序适配 iPhone X 底部小黑条 一.在 app.js 中获取到设备信息 getSystemInfo 获取设备信息,然后将底部距离保存到 globalData 中方便页面读取 当然如果项目 ...

  3. vue x 兼容iphone_详解关于移动端兼容iPhoneX底部小黑条

    场景 由于iPhoneX去掉了物理按键,改为了底部小黑条,这就会导致屏幕适配问题,最常见的场景就是底部fixed的元素被阻挡的情况.对于这种问题,我们一般采取css或js的处理方式(适用于h5,小程序 ...

  4. iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配

    最近写小程序时,遇到了 iPhoneX 底部小黑线与内容重叠的问题,实际上是iPhoneX安全区域的适配问题,了解清楚这个问题花了挺多时间的,也实操出了结果,忍不住来总结总结. 本文目录 前言     ...

  5. 微信小程序 iPhoneX 底部安全区域适配

    1.问题 微信小程序的tabbar会被iPhoneX 底部小黑条覆盖 2.解决方案 (1)获取手机型号,单独处理样式(底部小黑条大约为68rpx) (2)实现铺满全屏效果 (3)具体代码 app.js ...

  6. html5苹果x底部满屏,iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配...

    最近写小程序时,遇到了 iPhoneX 底部小黑线与内容重叠的问题,实际上是iPhoneX安全区域的适配问题,了解清楚这个问题花了挺多时间的,也实操出了结果,忍不住来总结总结. 前言 在苹果 iPho ...

  7. 1分钟解决 微信小程序 iPhone 11、iPhoneX 底部安全区域(底部小黑条)适配

    [最新:目前微信官方已适配iPhone11手机型号,分别为:iPhone 11,iPhone 11 Pro Max] iPhone X   对于微信小程序的tabbar来说,会被底部小黑条覆盖,需要处 ...

  8. 微信小程序 - 自定义头部导航栏组件(详解) + iphoneX以上遮挡小黑条适配问题

    1. 导航栏计算: 导航栏总高度=状态栏高度+胶囊高度+(胶囊距顶距离-胶囊高度)*2 navHeight = statusBarHeight + menuButtonObject.height + ...

  9. H5移动端网页适配iPhone x/iPhone xr/iPhone 11pro/iPhone 11/iPhone 12 机型底部小黑条

    iPhone x/iPhone xr/iPhone 11pro/iPhone 11/iPhone 12 取消了物理按键,改成底部小黑条,这一改动导致网页出现了比较尴尬的屏幕适配问题.对于网页而言,顶部 ...

最新文章

  1. 程序员也想改 Lottie 动画?是的!
  2. ubuntu16.0.4 opencv4.0.0 GPU 版本的 SURF
  3. 全站 HTTPS 就一定安全了吗?
  4. 利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能
  5. 为什么要在Java中使用Unchecked异常而不是Checked异常
  6. 线性结构节点类型(三)
  7. 180°舵机的使用步骤
  8. boost_1_48_0 在VS2008下的安装 Boost.Asio安装
  9. 软件测试 测试策略_测试策略| 软件工程
  10. Date型时间获取每周第一天,每月第一天,每季第一天,每年第一天
  11. python-time模块--pickle模块
  12. 黑客X档案 2002~2007 NPM、PYPI、DockerHub 备份
  13. RTT移植STM32之创建进程
  14. font: 12px/1.5 Tahoma, Helvetica, Arial, sans-serif;网页设计中的默认字体
  15. 中国染料产业竞争格局分析与消费需求调研报告2022版
  16. 不要小看 WebSocket!长连接、有状态、双向、全双工都是王炸技能
  17. 【分布式系统】唯一ID生成策略总结
  18. workflow、BPM及EAI的区别
  19. Objective-C 编程语言(4)) 协议---声明由别人实现的接口,由别人来实现的方法,为匿名对象声明接口
  20. java的double类型比较相等

热门文章

  1. Django发布机器学习服务
  2. maven 配置 mvn -v
  3. 2021年Nginx配置搭建HTTPS正向代理服务的2种方式
  4. Proxifier PE v3.21
  5. python 开源协议_python采用什么开源协议
  6. Mysql 级联删除失败
  7. 如何在公众号内优雅地添加代码块?我推荐几款常用的发帖工具!
  8. ​酞菁氧钛(TiOPc)微米线,酞菁氧钛有机微米线,一维超长酞菁氧钛(TiOPc)微米线​
  9. word把选择答案弄到题目里_怎么快速把WORD里题与答案分开 - 卡饭网
  10. linux --压缩xz