iphoneX 适配客户端H5页面的方法教程


Posted in HTML / CSS onDecember 08, 2017

前言

目前,很多APP设计师小伙伴已经开始转向H5前端开发啦,但是解决所有iPhone和安卓机型的适配问题是我们的重中之重。无论是设计APP还是写前端H5.都是要考虑移动端的兼容性。

由于iphoneX做了全面屏并且还保留一块小刘海,因此很多以前的移动端H5页面需要结合App客户端做出相应的适配,具体如下:

1、顶部通栏

之前的客户端一直采用状态栏20pt+导航栏44pt的做法。由于iphoneX多了一块小刘海,因此iphoneX单独采用状态栏44pt+导航栏44pt,意味着内嵌的H5页面整体下移24pt。

2、底部操作栏

由于iphoneX是全面屏,页面最底部会被弯曲的拐角截掉一部分,特别是有底部固定悬浮的tab条会严重受到影响。这时候需要底部留出一块空白安全区域,页面内容最终的底线应在手机拐角处。该安全区域的高度为34pt。

3、适配方法

终上所述,结合iphoneX目前特有的手机参数我们可以采用的适配方法为:

(1)meta标签

ios11为了适配iphoneX对现有的viewport meta标签新增一个特性:viewport-fit,如果客户端没有做全屏适配,那么页面想要全屏覆盖,则可使用该特性:

<meta name="viewport" content="width=device-width,viewport-fit=cover">

(2)媒体查询

1、利用constant函数

只有设置了viewport-fit=cover才能使用constant函数

@supports(bottom:constant(safe-area-inset-bottom)) {
    selector{
        padding-bottom:constant(safe-area-inset-bottom); 
        padding-bottom:calc(30px(假设值) + constant(safe-area-inset-bottom)); //根据实际情况选择适配方法
    }
}

2、利用iphoneX独特的型号参数

@media only screen and (device-width: 375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) {
    #buy {
        padding-bottom:34px; 
    }
}

(3)js判断(以下采用Jquery)

if($(window).width() === 375 && $(window).height() === 724 && window.devicePixelRatio === 3){
    #buy {
        padding-bottom:34px; 
    }
}

(4)客户端协议
 

也可以根据客户端协议请求客户端查询是否是iphoneX,以此来保持和客户端一致。

4、参数解释

以上代码中的参数解释如下:

  • safe-area-inset-bottom — ios11新增特性,用于设定安全区域与边界的距离
  • 375 — iphoneX设备的宽度
  • 812 — iphoneX设备的高度
  •     3 — iphoneX设备的分辨率
  • 724 — iphoneX设备的高度(812) - 顶部通栏高度(88)
  •   34 — 底部安全区域高度

以上参数均以标准的1pt=1px进行计算,如果H5页面采用缩放的rem方式,那么1pt = 1px * 3(iphoneX分辨率)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

HTML / CSS 相关文章推荐
CSS3 圆角效果
Jul 15 HTML / CSS
css3实现多个元素依次显示效果
Dec 12 HTML / CSS
HTML5中的postMessage API基本使用教程
May 20 HTML / CSS
HTML5的结构和语义(1):前言
Oct 17 HTML / CSS
html5+css3实现一款注册表单实例
Apr 17 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
canvas探照灯效果的示例代码
Nov 30 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
Jan 03 HTML / CSS
AmazeUI 缩略图的实现示例
Aug 18 HTML / CSS
CSS3通过var()和calc()函数实现动画特效
Mar 30 HTML / CSS
Html5页面播放M4a音频文件
Mar 30 HTML / CSS
CSS3 实现的图片悬停的切换按钮
Apr 13 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
Dec 07 #HTML / CSS
html5通过postMessage进行跨域通信的方法
Dec 04 #HTML / CSS
html5唤起app的方法
Nov 30 #HTML / CSS
Canvas与图片压缩的示例代码
Nov 28 #HTML / CSS
教你使用Canvas处理图片的方法
Nov 28 #HTML / CSS
HTML5打开手机扫码功能及优缺点
Nov 27 #HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
Nov 21 #HTML / CSS
You might like
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
php生成word并下载代码实例
2019/03/15 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
详解Python3的TFTP文件传输
2018/06/26 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Python函数和模块的使用总结
2019/05/20 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
python实现三种随机请求头方式
2021/01/05 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
高级文秘工作总结的自我评价
2013/09/28 职场文书
银行存款证明样本
2014/01/17 职场文书
单位委托书格式范本
2014/09/29 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Spring中bean集合注入的方法详解
2022/07/07 Java/Android