iPhone X网页适配问题_jsonya的博客-程序员秘密

技术标签: iphone x  html5  移动端  x  iphone  

北京时间9月12日,苹果在乔布斯剧院发布了iPhone X。iphoneX正面的全面屏上方有一条刘海,对于如何适配iphoneX,苹果Human Interface Guidelines文档已给出详细的说明。

苹果对于iphoneX的设计布局意见如下:


核心内容应该处于Safe area 确保不会被设备圆角(corners)。传感器外壳(sense哦 housing,机刘海)以及底部的home indicator遮挡。

本文将婆媳两则在iPhone X异性屏和iOS11网页适配中遇到的问题及解决方案。


iPhone X Safari横屏显示左右白边问题

iPhone X Safari在横屏状态下,网页左右两侧可能会出现白边,如下:

因为iPhone X会将网页内容显示在Safe area 导致的,解决这一问题,我们需要将背景颜色填充整个屏幕区域,而网页内容处于Sage area。


解决方案一:background-color:

如果网页设置了一个背景颜色,那么最简单解决方案是,在body节点设置background-color,是背景颜色填充整个屏幕,从而解决横屏显示左右白边的问题。


解决方案二:viewport-fit +safe-area-inser-*

在iOS11中苹果为web新增两个内容 viewport-fit+safe-area-inser-*

    注意:viewport-fit和safe-area-inset-*只对于WKWebView有效,在UIWebView中无效。


viewport-fit用于设置网页在可视窗口的布局方式

  文档:CSS Round Display Spec


这个属性可以设置为:

  contain:The viewport  should fully contain the web content .可视窗口完全包含网页内容

cover:The web content should fully cover the viewport 网页内容完全覆盖可视窗口

auto:The default value,contain

对于iPhone X之前的iphone设备屏幕为规则的矩形,网页内容都可以完整展示;但对于iPhone X是异性屏幕,通过viewport-fit可以设置网页内容在可视窗口中显示规则,通过下图可以辅助理解


我们知道默认情况下Viewport-fit=auto即为viewport-fit=contain,在iPhone X中,相当于网页内容展示在Safe area,这样也就是横屏显示时出现白边的原因了,所以我们可以设置viewport-fit=cover即可解决问题

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

注意到应用viewport-fit:cover之后,网页右上角,menu按键和in按键被圆角,传感器外壳(齐刘海)剪裁掉了


safe-area-inser-*

在设置viewport-fit:cover之后,web中会新增四个常亮:

   safe-area-inset-top

  sage-area-inser-right

  safe-area-inset-left

  safe-area-inset-bottom

分别表示Safe area和可视窗口viewport顶部,右边,左边,底部的间距,可以用于设置margin,padding,或者绝对定位时left,top

   注意:在横屏和竖屏状态下,safe-area-inset-*的值不同


为了解决应用viewport-fit=cover之后,有些显示内容被裁剪的问题,我们可以通过添加边距使得网页主要内容处于safe area中不被剪裁,解决方式如下:


padding:constant(safe-area-inset-top)constant(safe-area-inset-right)constant(safe-area-insert-bottom) constant(safe-area-inset-left);




iOS 11 WebView中状态栏的问题

在iOS 11 由于safe area,状态栏的表现有点不同。如果页面顶部有一个header bar,设置position:flxed:top:0px;那么在页面滚动的过程中,会出现如下问题::

banner bar 没有固定在最底部,上下滚动的过程中,我们可以看到网页内容从status bar下方穿过


问题重现:

创建一个iOS项目,视图中添加一个WKWebView,,加载百度首页

(void)viewDidLoad{

[super viewDidLoad];

WKWebView  *webView=[[WKWebView  alloc ] initWithFrame:self.view.bounds];

[webView loadRequest:[NSURLRequest requestWithUrl:[NSURL URLWithString:@"http://www.baidu.com]]];

[selft.view addSubview:webView];

}


剖析问题:

1、这个问题同样也是由于safe area 导致,虽然headerba位置信息为position:fixed;top:0px;但这个位置也是相对于safe area而言的,所以看到header bar并没有唯一屏幕最顶部,在viewport meta标签,添加viewport-fit=cover即可解决问题

虽然header bar固定在屏幕最上方,但是很明显在iPhone X中却被圆角和齐刘海才见了内容,这怎么办呢,为header bar添加padding-top即可解决此问题

header {
 /* ... */
 /* Status bar height on iOS 10 */
 padding-top: 20px;
 /* Status bar height on iOS 11+ */
 padding-top: constant(safe-area-inset-top);
}



参考链接

Human Interface Guidelines-iphone X

Removing the White bars in Safari on iphone X

Understanding the WebView Viewport in IOS 11


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jsonya/article/details/78201130

智能推荐

java itext生成word_dichaochou1120的博客-程序员秘密

  项目中需要生成word文档,由于最初做过excel的导入导出,使用的是apache的poi,本打算继续使用该组件,但是网上的相关资料实在太少,上官网看了下,发现poi更擅长的是处理execl,对于word一般只有读入却很有有写出的功能,而且api不完善,据官网介绍是开发word这一块的程序员走了,所以这一块也就烂掉了。只好另寻他策,于是就找到了itext。  itext主要是用来...

带您理解SQLSERVER是如何执行一个查询的_weixin_33825683的博客-程序员秘密

原文地址:http://www.cnblogs.com/lyhabc/p/3367274.html看这篇文章之前,阁下可以先看一下下面的文章SQLSERVER独特的任务调度算法&quot;SQLOS&quot;SQL Server SQLOS 的任务调度[转] 翻译自:http://rusanu.com/2013/08/01/understanding-how-sql-server-execu...

windows10 C盘空间"异常""占用问题解决--禁用系统还原+禁用虚拟内存_c盘大的异常_姑苏_IT的博客-程序员秘密

开始之前,我们不妨先来做一个计算,首先打开此电脑(如果你还在使用wind7,那就打开我的电脑),然后右击你的C盘,点击属性并记住你的C盘已使用空间大小.然后关闭属性窗口,打开C盘,尝试把C盘的所有文件占用的存储空间加起来,此时你会发现:C盘占用空间 &gt; C盘文件总大小,并且至少相差10G。那么C盘这10G左右的存储空间究竟去哪了呢?又如何释放着部分空间为我们所用呢?且让我为你细细道来。^ -...

以太网端口技术(1)_以太网帧发出端口选择_TIC_YX的博客-程序员秘密

1、以太网连接需求    (1)以太网连接必须保证网络的性能:网络带宽、网络时延    (2)以太网的性能需求主要取决于不同的应用:电子邮件、文件传输、实时语音、视频    (3)网络性能取决于许多不同的因素,其中一个重要因素就是用来连接设备的线缆的类型和布局线缆的介质类型,主要以标准以太网、快速以太网、千兆以太网为主2、以太网类型    解决以太网连接带宽问题,增加带宽的

越来越多的Java程序员转行Java大数据..._java1856905的博客-程序员秘密

JAVA的精密,强大,拥有其它语言不可替代的性能和可维护性,早已经是成为最受欢迎的编程语言之一,很多人想进入IT行业,首选的第一门语言就是JAVA。  但是,在未来肯定是大数据的天下,人工智能的爆发,将会有大量企业会进入大数据领域,从而产生大量的大数据人才需求。据最新发布的《大数据人才报告》显示,目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万。领英报...

ostream_iterator输出流迭代器的简单使用(copy作打印功能)_Kuany_的博客-程序员秘密

ostream_iterator输出流迭代器的简单使用(copy作打印功能)先放几行代码: vector&lt;int&gt; v = {54,3,89,7}; ostream_iterator&lt;int&gt; out_iter(cout, " "); copy(v.cbegin(), v.cend(), out_iter); //以上两行,效果同 for_each(v.cbegin(),v.cend(),[](int val){cout&lt;&lt;val&lt;&lt;"

随便推点

linux内核课程 陈,Linux内核分析课程_学习索引_坑货两只的博客-程序员秘密

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?Linux内核分析学习博客整理:计算机的工作过程,一言以蔽之:执行程序的过程;所以分析计算机的工作原理也就是分析计算机存储程序,执行程序的原理,所以,我们就需要先通过了解程序存储的这个过程。这篇博客主要分析了计算机的组成和计算机的工作原理,并例举C语言和汇编的转化,最后给出了程序执行时候堆栈变化的动态示意图.操作系统的工...

2021年最新Java学习路线图_一条有梦想的咸鱼$的博客-程序员秘密

本路线是学习了韩顺平老师Java学习路线图之后做的笔记,有喜欢的小伙伴可以看一下,非常全面详细脑图地址

bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支*_weixin_34204057的博客-程序员秘密

bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支题意:n天,每天有一个花费,现在要将它们分成连续的m段,要求所有段的总花费的最大值最小。求这个值。n,m≤100000题解:二分花费,小于二分值的天作为一段。注意二分的下界应该是每天花费的最大值。代码: 1 #include &lt;cstdio&gt; 2 #include &l...

二叉树的层序遍历_cherry_chenrui的博客-程序员秘密

问题描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。问题分析:根据问题的描述,可以很明确的知道,问题是要求我们进行二叉树的层序遍历,只需要借助队列的先进先出的特点,就ok了。注意:编代码最初级的目的只是实现目的,而随着我们代码量的增加,目的变得不那么简单,我们要想方设法加快代码的执行速度,当然是在代码的性能上面。比如减少循环的次数等等。有两个因素:时间复杂度和空

英语学习计划_toqing111的博客-程序员秘密

1,朗文英语语法/2,new concept english 1-4

蓝牙自动配对怎么实现_qq_1797801363的博客-程序员秘密

明年就要毕业了,所以最近开始刷面试题,碰到了一个问题“蓝牙自动配对怎么实现的?”,刚开始有点懵逼了。于是学习一波,记录下来。1 实现过程及原理  配对是建立连接的基础,任何从未配对过的设备(或曾经配对但其中一方已删除配对关系)都无法建立连接,因此配对无法绕过。配对的方式有输入pin码、输入密码、免输入的随机验证码等多种。当前XX设备与控制端的配对方式为免输入的随机验证码,两端确认6位数密码...

推荐文章

热门文章

相关标签