您现在的位置是:网站首页> 编程资料编程资料
Html5适配iphoneX刘海屏的简单实现简述Html5 IphoneX 适配方法有关HTML5页面在iPhoneX适配问题
2021-08-31
1053人已围观
简介 iphonex的刘海屏且不说好看不好看,但是确实给开发造成一定困扰,那么Html5适配iphoneX刘海屏的简单实现,下面就跟小编一起来了解一下
iphonex的刘海屏且不说好看不好看,但是确实给开发造成一定困扰,有些PM希望产品能够全屏展示,于是客户端就把刘海以上的空间让出来让前端处理,造成一个问题就是当页面头部固定在顶部时,如果上下滑动页面会有较大缝隙出现,如果背景全是白色还好,否则跟断层了似的,非常难看。
iphone屏幕尺寸


iphoneX与其他机型尺寸上的差异

导致上述问题的原因就是iphoneX存在安全区域,安全区域指的是一个可视窗口范围,处于安全区域的内容不受圆角(corners)、齐刘海(sensor housing)、小黑条(Home Indicator)影响,如下图蓝色区域:

也就是说,我们要做好适配,必须保证页面可视、可操作区域是在安全区域内。
具体尺寸,详见Human Interface Guidelines – iPhoneX
如何适配?
第一步,设置网页在可视窗口的布局方式
iOS11 新增特性,苹果公司为了适配 iPhoneX 对现有 viewport meta 标签的一个扩展,用于设置网页在可视窗口的布局方式,可设置三个值:
- contain: 可视窗口完全包含网页内容(左图)
- cover:网页内容完全覆盖可视窗口(右图)
- auto:默认值,跟 contain 表现一致

注意:网页默认不添加扩展的表现是 viewport-fit=contain,需要适配 iPhoneX 必须设置 viewport-fit=cover,这是适配的关键步骤。
具体详见:The viewport-fit descriptor
第二步,页面主体内容限定在安全区域内
.post { padding: 12px; padding-left: env(safe-area-inset-left); padding-left: const(safe-area-inset-left); padding-right: env(safe-area-inset-right); padding-right: const(safe-area-inset-right); }constant 函数
iOS11 新增特性,Webkit 的一个 CSS 函数,用于设定安全区域与边界的距离,有四个预定义的变量:
- safe-area-inset-left:安全区域距离左边边界距离
- safe-area-inset-right:安全区域距离右边边界距离
- safe-area-inset-top:安全区域距离顶部边界距离
- safe-area-inset-bottom:安全区域距离底部边界距离
注意:部分浏览器已经不支持constant函数,用env函数替代
默认情况下,如果客户端处理了安全区域,效果如下:

使用全面屏viewport-fit=cover属性后:

安全区域图:

限定安全区域后效果图:

上面设置了padding为12像素,如果旋转方向后:

第三步,使用min()和max()方法
@supports(padding: max(0px)) { .post { padding-left: max(12px, env(safe-area-inset-left)); padding-right: max(12px, env(safe-area-inset-right)); } }
fixed元素固定问题
如果页面title是前端实现的,且固定在顶部,就会出现被遮挡的情况,这时候可以设置top值为安全距离值,比如:
.header{top:env(safe-area-inset-top);top:const(safe-area-inset-top);}参考文章:Designing Websites for iPhone X
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- html5唤醒APP小记Html5如何唤起百度地图App的方法html5调用app分享功能示例(WebViewJavascriptBridge)Html5 APP中监听返回事件处理的方法示例html5唤起app的方法HTML5页面中尝试调起APP功能
- html5录音功能实战示例HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能详解HTML5 录音的踩坑之旅HTML5录音实践总结(Preact)
- 利用 Canvas实现绘画一个未闭合的带进度条的圆环canvas实现有递增动画的环形进度条的实现方法详解利用canvas实现环形进度条的方法canvas实现圆形进度条动画的示例代码HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
- 使用Html5多媒体实现微信语音功能HTML5实时语音通话聊天MP3压缩传输3KB每秒鲜为人知的HTML5语音合成功能基于Html5实现的语音搜索功能HTML5为输入框添加语音输入功能的实现方法Jquery+html5可设置闹钟并且会语音提醒的时钟特效源码用html5实现语音搜索框的方法HTML5语音识别标签写法附图html5的新玩法——语音搜索HTML5 语音搜索只需一句代码HTML5 语音搜索(淘宝店语音搜素)
- 使用canvas来完成线性渐变和径向渐变的功能的方法示例html5 canvas绘制放射性渐变色效果HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例使用javascript和HTML5 Canvas画的四渐变色播放按钮效果html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
- 浅析canvas元素的html尺寸和css尺寸对元素视觉的影响html5中监听canvas内部元素点击事件的三种方法HTML5 创建canvas元素示例代码html5的canvas元素使用方法介绍(画矩形、画折线、圆形)HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
- 详解通过focusout事件解决IOS键盘收起时界面不归位的问题html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 详解window.open被浏览器拦截的解决方案微信浏览器左上角返回按钮拦截功能
- data:image data url 文件转为Blob上传后端的方法浏览器中的data类型的Url格式 data:image/png,data:image/jpeg!
- 基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能HTML5 canvas实现移动端上传头像拖拽裁剪效果html5 canvas移动浏览器上实现图片压缩上传导出HTML5 Canvas图片并上传服务器功能
