微信小程序中吸底按钮适配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 验证浏览器是否支持javascript的方法小结
May 17 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 Javascript
网页打开自动最大化的js代码
Aug 22 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
May 24 Javascript
Angular2数据绑定详解
Apr 18 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
Apr 23 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
基于JavaScript实现一个简单的Vue
Sep 26 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
对Layer UI 模块化的用法详解
Sep 26 Javascript
vue缓存之keep-alive的理解和应用详解
Nov 02 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
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
Python 专题三 字符串的基础知识
2017/03/19 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python实现最常见加密方式详解
2019/07/13 Python
django的csrf实现过程详解
2019/07/26 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python3中sys.argv的实例用法
2020/04/24 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
如何写自我鉴定
2014/03/19 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
项目工作说明书
2014/07/29 职场文书
公司演讲稿开场白
2014/08/25 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
北京天坛导游词
2015/02/12 职场文书
涨价通知怎么写
2015/04/23 职场文书
安全生产会议制度
2015/08/06 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
Elasticsearch 基本查询和组合查询
2022/04/19 Python