微信小程序中吸底按钮适配iPhone X方案


Posted in Javascript onNovember 29, 2017

随着第二三批iPhone X的陆续到货,身边的土豪们纷纷用了起来,因为iPhone X的齐刘海导致的适配问题很多,所以这群土豪更沉浸在各种找bug中,不出所料,豌豆公主小程序在一些地方也出现了一丢丢体验不好的地方,主要是商品详情页和购物车的吸底按钮栏,会与 Home Indicator 横条重叠,这样在点击下方按钮时很容易误触发手势操作,如下图:

微信小程序中吸底按钮适配iPhone X方案 

截图来自网络,侵删

是bug就得修,是体验问题就得优化,于是立马搞了一台iPhone X开始研究。

网页端的适配还好,有 viewport meta 标签以及下面的方案进行处理。具体可参看这里

{
 position: fixed;
 bottom: 0;
 width: 100%;
 height: constant(safe-area-inset-bottom);
 background-color: #fff;
}

但比较尴尬了,从四个角被裁掉的表现上可以推测小程序里的 viewport-fit 默认为 cover (根据表现猜测),但是没有接口去更改,所以网页端通过 viewport-fix=cover 结合 constant(safe-area-inset-bottom); 的适配方案不适合小程序。目前也没有看到小程序有对iPhone X等异形屏有特殊的接口或字段。小程序本身的底部tab栏对iPhone X的适配也只是简单的加了一个白色底栏,提高了原有tab栏的位置,为什么这么说呢?因为这一点可以从我们购物车页面看出,购物车页吸底操作并非通过 position:fixed;bottom:0; 实现的,而是根据 windowHeight-自身高度 计算 top 值,从而模拟的吸底,在小程序新版本适配iPhone X后,导致购物车底部按钮被盖住了一半,由此得出上面的结论。

言归正传,既然没有特殊的方案获取该值,我们只能通过 wx.getSystemInfo 接口取获取设备信息,该接口使用方法如下:

wx.getSystemInfo({
 success: function(res) {
  console.log(res.model)
  console.log(res.pixelRatio)
  console.log(res.windowWidth)
  console.log(res.windowHeight)
  console.log(res.language)
  console.log(res.version)
  console.log(res.platform)
 }
})

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

在子页面中可以读取该值,举个商品详情页的栗子:

<!-- goods.wxml -->
<view class="button-group {{isIpx?'fix-iphonex-button':''}}">这是一个吸底按钮区域</view>
// goods.js
let app = getApp();
Page({
  data: {
    isIpx: app.globalData.isIpx?true:false
  }
})
/* app.wxss */
.fix-iphonex-button {
  bottom:68rpx!important;
}
.fix-iphonex-button::after {
  content: ' ';
  position: fixed;
  bottom: 0!important;
  height: 68rpx!important;
  width: 100%;
  background: #fff;
}

于是,一个简单的适配iPhone X底部圆角的方案就完成了。

至于为什么采用 68rpx ,因为iPhone X和iPhone 6的屏幕宽度都是375px,小程序中 750rpx = 375px = 750物理像素 ,结合下面两图能解释原因:

微信小程序中吸底按钮适配iPhone X方案 

截图来自网络,侵删

微信小程序中吸底按钮适配iPhone X方案 

截图来自网络,侵删

总结

以上所述是小编给大家介绍的微信小程序中吸底按钮适配iPhone X方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript实现动态CSS换肤技术的脚本
Jun 29 Javascript
JQuery CSS样式控制 学习笔记
Jul 23 Javascript
Mootools 1.2教程 类(一)
Sep 15 Javascript
JS 遮照层实现代码
Mar 31 Javascript
javascript函数中的arguments参数
Aug 01 Javascript
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
javascript中自定义对象的属性方法分享
Jul 12 Javascript
node.js实现多图片上传实例
Jun 03 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 Javascript
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
vue + vuex todolist的实现示例代码
Mar 09 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 #jQuery
写给小白看的JavaScript异步
Nov 29 #Javascript
3种vue组件的书写形式
Nov 29 #Javascript
easyui下拉框动态级联加载的示例代码
Nov 29 #Javascript
纯js实现隔行变色效果
Nov 29 #Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
Nov 29 #Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 #Javascript
You might like
投票管理程序
2006/10/09 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php use和include区别总结
2019/10/13 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
js实现登录与注册界面
2017/11/01 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
对python中的logger模块全面讲解
2018/04/28 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
pip安装python库的方法总结
2019/08/02 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
个人简历自我评价八例
2013/10/31 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
八年级作文之感恩
2019/11/22 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书