微信小程序中吸底按钮适配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 相关文章推荐
Extjs学习笔记之七 布局
Jan 08 Javascript
js 获取服务器控件值的代码
Mar 05 Javascript
javascript实现促销倒计时+fixed固定在底部
Sep 18 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
浅析JS中回调函数及用法
Jul 25 Javascript
Vue实现导航栏点击当前标签变色功能
Aug 19 Javascript
jQuery 动态粒子效果示例代码
Jul 07 jQuery
three.js 如何制作魔方
Jul 31 Javascript
原生JS实现记忆翻牌游戏
Jul 31 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
React Hook用法示例详解(6个常见hook)
Apr 28 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
Codeigniter发送邮件的方法
2015/03/19 PHP
php简单获取复选框值的方法
2016/05/11 PHP
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
JS验证字符串功能
2017/02/22 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
python操作日期和时间的方法
2014/03/11 Python
详解Python的Lambda函数与排序
2016/10/25 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
播音主持女孩的自我评价分享
2013/11/20 职场文书
外贸采购员求职的自我评价
2013/11/26 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
学校运动会霸气口号
2014/06/07 职场文书
违纪开除通知书
2015/04/25 职场文书
爱国影片观后感
2015/06/18 职场文书
CAD实训总结范文
2015/08/03 职场文书
56句经典英文座右铭
2019/08/09 职场文书