Html5适配iphoneX刘海屏的简单实现


Posted in HTML / CSS onApril 09, 2019

iphonex的刘海屏且不说好看不好看,但是确实给开发造成一定困扰,有些PM希望产品能够全屏展示,于是客户端就把刘海以上的空间让出来让前端处理,造成一个问题就是当页面头部固定在顶部时,如果上下滑动页面会有较大缝隙出现,如果背景全是白色还好,否则跟断层了似的,非常难看。

iphone屏幕尺寸

Html5适配iphoneX刘海屏的简单实现

Html5适配iphoneX刘海屏的简单实现

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

Html5适配iphoneX刘海屏的简单实现

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

Html5适配iphoneX刘海屏的简单实现

也就是说,我们要做好适配,必须保证页面可视、可操作区域是在安全区域内。

具体尺寸,详见Human Interface Guidelines – iPhoneX

如何适配?

第一步,设置网页在可视窗口的布局方式
<meta name=“viewport” content=“width=device-width, viewport-fit=cover”>

iOS11 新增特性,苹果公司为了适配 iPhoneX 对现有 viewport meta 标签的一个扩展,用于设置网页在可视窗口的布局方式,可设置三个值:

  • contain: 可视窗口完全包含网页内容(左图)
  • cover:网页内容完全覆盖可视窗口(右图)
  • auto:默认值,跟 contain 表现一致

Html5适配iphoneX刘海屏的简单实现

注意:网页默认不添加扩展的表现是 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函数替代

默认情况下,如果客户端处理了安全区域,效果如下:

Html5适配iphoneX刘海屏的简单实现

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

Html5适配iphoneX刘海屏的简单实现

安全区域图:

Html5适配iphoneX刘海屏的简单实现

限定安全区域后效果图:

Html5适配iphoneX刘海屏的简单实现

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

Html5适配iphoneX刘海屏的简单实现

第三步,使用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));
    }
}

Html5适配iphoneX刘海屏的简单实现

fixed元素固定问题

如果页面title是前端实现的,且固定在顶部,就会出现被遮挡的情况,这时候可以设置top值为安全距离值,比如:

.header{top:env(safe-area-inset-top);top:const(safe-area-inset-top);}

参考文章:Designing Websites for iPhone X

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
纯HTML5+CSS3制作图片旋转
Jan 12 HTML / CSS
CSS3 实现弹幕的示例代码
Aug 07 HTML / CSS
详解css3 Transition属性(平滑过渡菜单栏案例)
Sep 05 HTML / CSS
CSS3 3D酷炫立方体变换动画的实现
Mar 26 HTML / CSS
CSS3实现文字描边的2种方法(小结)
Feb 14 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
Mar 09 HTML / CSS
html5仿支付宝密码框的实现代码
Sep 06 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
Jan 09 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
Jul 18 HTML / CSS
HTML5 预加载让页面得以快速呈现
Aug 13 HTML / CSS
深入解析HTML5中的Blob对象的使用
Sep 08 HTML / CSS
完美解决IE8下不兼容rgba()的问题
Mar 31 HTML / CSS
html5唤醒APP小记
Mar 27 #HTML / CSS
html5录音功能实战示例
Mar 25 #HTML / CSS
浅析HTML5中的download属性使用
Mar 13 #HTML / CSS
手把手教你实现一个canvas智绘画板的方法
Mar 04 #HTML / CSS
详解h5页面在不同ios设备上的问题总结
Mar 01 #HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
Feb 20 #HTML / CSS
h5网页水印SDK的实现代码示例
Feb 19 #HTML / CSS
You might like
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
Python数据结构之翻转链表
2017/02/25 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
学python需要去培训机构吗
2020/07/01 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
八一建军节演讲稿
2014/09/10 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
2014年节能减排工作总结
2014/12/06 职场文书