微信小程序适配iphoneX的实现方法


Posted in Javascript onSeptember 18, 2018

一、 安全区域(safe area)

与iPhone6/6s/7/8相比,iPhone X 无论是在屏幕尺寸、分辨率、甚至是形状上都发生了较大的改变,下面以iPhone 8作为参照物,先看看iPhone X尺寸上的变化:

微信小程序适配iphoneX的实现方法

苹果对于 iPhone X 的设计布局意见如下:

微信小程序适配iphoneX的实现方法

核心内容应该处于 Safe area 确保不会被设备圆角(corners),传感器外壳(sensor housing,齐刘海) 以及底部的 Home Indicator 遮挡。也就是说 我们设计显示的内容应该尽可能的在安全区域内;

二、h5页面适配

1、viewport-fit的meta标签作为适配方案;viewport-fit的默认值是auto。

viewport-fit取值如下:

auto 默认:viewprot-fit:contain;页面内容显示在safe area内
  cover viewport-fit:cover,页面内容充满屏幕

2、css constant()函数 与safe-area-inset-top & safe-area-inset-left & safe-area-inset-right & safe-area-inset-bottom的介绍.

当我们设置viewport-fit:contain,也就是默认的时候时;设置safe-area-inset-left, safe-area-inset-right, safe-area-inset-top和 safe-area-inset-bottom等参数时不起作用的。当我们设置viewport-fit:cover时:设置如下

body {

  padding-top: constant(safe-area-inset-top);  //为导航栏+状态栏的高度 88px      

  padding-left: constant(safe-area-inset-left);  //如果未竖屏时为0        

  padding-right: constant(safe-area-inset-right); //如果未竖屏时为0        

  padding-bottom: constant(safe-area-inset-bottom);//为底下圆弧的高度 34px    

}

三、小程序适配

viewport-fit的适配方案不适合小程序。目前也没有看到小程序有对iPhone X等异形屏有特殊的接口或字段。小程序本身的底部tab栏对iPhone X的适配也只是简单的加了一个白色底栏,提高了原有tab栏的位置。我们只能通过 wx.getSystemInfo 接口取获取设备信息,该接口使用方法如下:

wx.getSystemInfo({

   success: function (res) {

      if (res.model == 'iphonrx') {

         this.setData({

            isIphoneX: true

         })

      }

   }

}) 

其中 model 便是设备的型号等信息,如果 model 值为iphonerx ,便可认为该设备为iPhone X,我们在入口文件 app.js 中去进行检测,然后在全局增加一个 isIphoneX 字段。

wxml部分:

<view class="button-group {{isIphoneX ?'fix-iphonex-button':''}}">这是一个吸底按钮区域</view>

wxss部分:

.fix-iphonex-button {
  bottom:68rpx!important;
}

.fix-iphonex-button::after {
  content: ' ';
  position: fixed;
  bottom: 0!important;
  height: 68rpx!important;
  width: 100%;
  background: #fff;
}

至于为什么采用 68rpx,

微信小程序适配iphoneX的实现方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 多行文本框(textarea)高度变化
Jul 03 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
谈谈JS中的!!
Dec 07 Javascript
在 webpack 中使用 ECharts的实例详解
Feb 05 Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 Javascript
vue或react项目生产环境去掉console.log的操作
Sep 02 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 #Javascript
解决vue attr取不到属性值的问题
Sep 18 #Javascript
vue动画打包后失效问题的解决方法
Sep 18 #Javascript
vue自定义全局共用函数详解
Sep 18 #Javascript
vue-自定义组件传值的实例讲解
Sep 18 #Javascript
vuex actions传递多参数的处理方法
Sep 18 #Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 #Javascript
You might like
php简单提示框alert封装函数
2010/08/08 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
大学生简历中个人的自我评价
2013/10/06 职场文书
人力资源管理毕业生自荐信
2013/11/21 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
高三家长寄语
2014/04/03 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
网络营销计划
2015/01/17 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
详解MySQL集群搭建
2021/05/26 MySQL