微信小程序适配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 dialog键盘事件代码
Aug 01 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
jquery常用操作小结
Jul 21 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
Oct 10 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
Nov 02 Javascript
laravel5.4+vue+element简单搭建的示例代码
Aug 29 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
vue数据初始化initState的实例详解
Apr 11 Javascript
解决Vue打包上线之后部分CSS不生效的问题
Nov 12 Javascript
JS实现横向轮播图(中级版)
Jan 18 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 页面执行时间计算代码
2008/12/04 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
详解Python中类的定义与使用
2017/04/11 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
英国健身专家:WIT Fitness
2021/02/09 全球购物
物业保安主管岗位职责
2013/12/25 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
创建青年文明号材料
2014/05/09 职场文书
无传销社区工作方案
2014/05/13 职场文书
部队2014年终工作总结
2014/11/27 职场文书
2014年防汛工作总结
2014/12/08 职场文书
组织生活会发言材料
2014/12/15 职场文书
客户答谢会致辞
2015/07/30 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
vue实现登陆页面开发实践
2022/05/30 Vue.js