需求场景: H5页面有一个吸底的按钮,但是异形屏幕【iPhonex等】,按钮一大半会被系统的小黑条挡住。需要适配在异形屏幕下,完整展示按钮,不被遮挡。

查了一些资料,发现为了应对刘海屏幕,苹果也给出了响应的策略

一个meta头

<meta name="viewport" content="viewport-fit=cover">

meta 有三个属性

  1. contain 可视化窗口完全包含网页内容
  2. cover 网页内容完全覆盖 (小程序默认)
  3. auto 默认值和 contain 一样(h5网页默认contain )

两个CSS函数

  • env() 兼容 版本>ios11.2
  • constant() 兼容 版本<ios11.2

四个预定义变量

safe-area-inset-left:安全区域距离左边边界的距离
safe-area-inset-right:安全区域距离右边边界的距离
safe-area-inset-top:安全区域距离顶部边界的距离
safe-area-inset-bottom :安全距离底部边界的距离


看完上面,应该就知道怎么进行适配了。

  1. 设置meta头部,content=“viewport-fit=cover”
  2. 在吸底的元素上设置
 margin-bottom:  env(safe-area-inset-bottom);margin-bottom:  constant(safe-area-inset-bottom);

上效果图

这样就完美避免了被小黑条遮挡的问题。但是看起来按钮是不是悬浮在中间。有点奇怪
优化一下, margin改为padding
3.

 padding-bottom:  env(safe-area-inset-bottom);padding-bottom:  constant(safe-area-inset-bottom)

RN: safeAreaView组件

ReactNative从0.50.1版本开始,加入了safeAreaView组件来适配iphoneX 异型屏幕
safeAreaView的使用方式也非常简单,只要使用safeAreaView标签来包裹住原来的根标签,并且可以设置样式,flex:1等;也可以设置背景颜色backgroundColor,这样底部安全区留白的颜色自定义可以通过backgroundColor来实现

 <SafeAreaView style={{flex: 1, backgroundColor: '#fff'}}><View style={{flex: 1}}>。。。    </View>
</SafeAreaView>

拓展:小程序自定义头部的适配问题

小程序获取安全区域,可以通过wx.getSystemInfoAsync()来获取safeArea对象。通常适配的时候会要用到安全距离。同事用safeArea的top来设置自定义头部的top。但我在实测中遇到了一个真机的bug。
红米k20的手机 safeAea对象的top返回的是0 ,导致自定义头部很状态栏重叠。

console对象


这时候才发现,应该用statusBarHeight 状态栏这个字段才是最正确的。
改完发现ok了。

H5|小程序|RN页面适配iphoneX【异形屏幕|底部安全区域】相关推荐

  1. 微信小程序将页面按钮悬浮固定在底部

    效果图如下所示: ps: 悬浮固定在页面的底部,并且背景有白色层将页面底部文字的显示遮罩,一面影响显示观感.且不受页面下拉上提的影响. wxml代码如下: <!--底部按钮的背景层-->& ...

  2. 【天天外链】支持H5链接跳转到企业小程序任意页面!

    除了传统的固定外链模式,天天外链现在支持H5/链接跳转到企业小程序任意页面. 提前准备 在天天外链官网小程序/后台注册[天天外链],使用密钥版添加您的小程序(输入配置参数即可) 创建一条推广链接(简单 ...

  3. 小程序中页面兼容h5标签的解析

    有时候当小程序向后台拿数据是一篇html标签的文章时,把它放进小程序会发现很多标签就不兼容,如果要一个个改又很麻烦,有没有方法可以很快地兼容html标签呢?  有个工具可以做到:wxParse  下载 ...

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

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

  5. 微信小程序 全面屏适配

    最近在做小程序,说实话小程序的坑我才刚踩.今天做了一个关于小程序自定义navigator的功能,不废话,先上图 通过配置app.json的window属性的navigationStyle(导航栏样式, ...

  6. h5自定义相机界面_有没有什么比较好用的H5小程序?

    22款H5小程序让你可以更轻松胜任新媒体运营工作 人人秀 3分钟制作H5界面.H5游戏.H5活动.涨粉活动的利器. 24好玩 小白3分钟创建刷屏级H5,支持嵌入小程序运营,快速实现增粉.留存. 易企秀 ...

  7. 7.微信小程序(布局适配与物理逻辑像素)

    微信小程序(布局适配与物理逻辑像素) 前言 移动端开发经常遇到一些概念:物理像素.逻辑像素.像素密度.像素比等,本节来详细介绍下 关键词: 屏幕尺寸.物理像素/屏幕分辨率/物理分辨率.逻辑像素DIP. ...

  8. win7下搭建小程序服务器,重磅!微信PC端支持小程序直接开启 适配Win7及以上系统...

    原标题:重磅!微信PC端支持小程序直接开启 适配Win7及以上系统 腾讯科技讯 8月9日,腾讯科技在"微信开放社区"发现,微信正在测试"PC端支持打开小程序"能 ...

  9. 基于Uni-APP多端「h5+小程序+App」高仿抖音小视频|直播|聊天实例

    uni-ttLive 基于uni-app+uView-ui跨端开发短视频+直播聊天实例. 全新研发的一款多端仿制抖音短视频+直播+聊天项目,基于uniApp+Vue.js+Vuex+Nvue+uVie ...

最新文章

  1. 区块链如何应用于保险行业
  2. float排版c语言,如何解决因float带来的排版问题?
  3. ssrs 基于表达式显示_基于表达式的访问控制
  4. 黑苹果2k屏_一加手机屏幕新特性:120Hz、2K+ OLED、10bit
  5. 算法高级(13)-常见负载均衡算法Java代码实现
  6. python跳过错误_Pandas之read_csv()读取文件跳过报错行的解决
  7. [导入]完成可脚本调用的视频录制控件
  8. BZOJ 2878: [Noi2012]迷失游乐园( 树形dp )
  9. Arts 第九周(5/13 ~ 5/19)
  10. vivo android 刷机教程,vivo刷机步骤盘点【图文教程】
  11. Opencv3.4.6+VS2019+win10安装教程
  12. 【历史上的今天】5 月 25 日:雅虎与 eBay 联盟;第一次国际万维网会议;Google 街景发布
  13. ‘connector.type‘ expects ‘filesystem‘, but is ‘kafka‘
  14. java版本电子招标采购系统源码—企业战略布局下的采购
  15. C++学生类和成绩排序
  16. html,css和js
  17. MapReduce学习1:MapReduce基本概念
  18. Cause: java.sql.SQLException: SQL String cannot be empty 解决方案
  19. Linux智能家居项目
  20. [小说]魔王冢(16)寻凶(二)

热门文章

  1. 2021年初赛模拟卷1
  2. PartTime_网址_国外
  3. Vue3 -- PDF展示、添加签名(带笔锋)、导出
  4. Java 性能笔记:自动装箱/拆箱
  5. ppst技术视频—— nginx ubuntu安装使用
  6. 一键生成文章的软件有哪些?将这几个不错的软件分享给你
  7. CYCLEGAN (棋盘效应被解决)
  8. “蔚来杯“2022牛客暑期多校训练营2 个人题解集合
  9. 分享米筐量化的使用方法
  10. 两大世界级企业(京瓷和KDDI)创办者--稻盛和夫