• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >心得技巧 > 腾讯设计师:极速适配 iPhone X 的技巧揭秘!

腾讯设计师:极速适配 iPhone X 的技巧揭秘!

作者:腾讯ISUX 字体:[增加 减小] 来源:互联网 时间:2018-08-23

本文主要包含H5页面,iPhone X,经验分享,页面适配等相关知识,腾讯ISUX希望在学习及工作中可以帮助到您

有什么方法可以极速适配iPhone X ?今天这篇好文腾讯设计师以QQ空间H5的项目为例,给大家分享最快的适配方法!

一. iPhone X适配方案

2017年9月苹果发布了iPhone X机型,对于它的「刘海儿」和底部Home Indicator,QQ空间H5也在第一时间做了兼容适配。在适配过程中,我们也尝试了这三种方案,如下。

1. 客户端适配

解决方案

客户端直接将webview的安全区域限制在除去安全区域的区域内。页面将展示在下图灰色webview内:

利弊分析

  • 优点:H5前端开发没有任何适配工作量。
  • 缺点:页面会限制在客户端限制的webview区域内,没有满屏效果。
2. 使用media query

解决方案

针对iPhoneX机型在html结构的meta标签加入:

<meta name=”viewport” content=”…,viewport-fit=cover” />

在css中加入:

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

适配效果

利弊分析

  • 优点:对于iPhone X适配,最简单直接有效的方法,不会影响到其他iOS机型。
  • 缺点:对于全屏/透顶标题栏/横屏情况都要用不同的css代码进行适配,不够灵活。另外,如果苹果下一年又发布了类似iPhone X plus这样的机型,适配工作就要重新来过。
3. 使用苹果提供的新属性

解决方案

苹果对于iPhone X上H5页面的适配,提供了特殊属性支持,包括meta标签的viewport属性值中加入viewport-fit和加入constant(safe-area-inset-X)和env(safe-area-inset-X) ,这些属性是与iOS11以上的所有iPhone机型(不仅仅包括iPhone X)都相关的,故以iOS版本为区别具体分析一下全屏下的H5页面:

(1)针对iOS11.0以下系统:

将不识别H5页面meta标签下的viewport-fit及constant(safe-area-inset-X)/env(safe-area-inset-X)属性。

(2)针对于iOS11.0-iOS11.1的系统:

当设置了viewport-fit=cover,H5页面会覆盖页面安全区域全屏展示,但是这样会带来页面元素会被「刘海儿」和底部Home Indicator遮挡问题,所以苹果提供在css中设置constant(safe-area-inset-X)距离来规避遮挡问题。

这些在不同webview下会表现不同的值,我们留到后面分析。

另外,页面不加viewport-fit=cover默认viewport-fit=contain/auto,也就是我们看到的页面不能覆盖安全区域的情况,此时constant(safe-area-inset-X)的值都为0。

所以在meta标签的viewpoint中加viewport-fit=cover时iOS10和iOS11下constant(safe-area-inset-X)值的表现是不一样的。

(3)针对iOS11.2及iOS11.2以上的系统:

constant() function改成了env(),其他与iOS11.2以下表现一样(详见第2点)。另外,iOS11.2新增了CSS function: min()和max()。例如:

padding-left: max(12px, env(safe-area-inset-left));

在env(safe-area-inset-left)值因为webview变化时值也可以做出相应变化,取12px和env(safe-area-inset-left)的较大值。

总结如下图:

在了解了以上情况后,大致可以知道如果要适配一个普通H5页面的顶部时,可以在meta标签的viewport属性中加入:

<meta name=”viewport” content=”…,viewport-fit=cover” />

然后在需要的class里面加入:

…{
padding-top: 20px; /* iOS 10 */
padding-top: constant(safe-area-inset-top); /* iOS 11.0-iOS 11.1 */
padding-top: env(safe-area-inset-top); /*iOS 11.2 */
}

在iOS11机型上,H5加入viewport-fit=cover后,safeArea的值是基于「如果布局接触了非安全区域才会赋值」。所以在不同情况下会有不同表现。如下表所示:

适配结果

这里展示了iPhone8 / iPhone X (iOS11.2)透顶状态栏/透顶标题栏/普通标题栏下打开适配H5的效果图。

对应代码:

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<title>test</title>
<meta name=”viewport” content=”width=device-width, initial-scale=1,minimum-scale=1, maximum-scale=1, user-scalable=no,viewport-fit=cover” />
<style type=”text/css”>
html {
background-color: #FFCD00;
}
html,body{
width: 100%;
height: 100%;
}
body, div{
margin: 0;
padding: 0;
}
.main{
font-size: 24px;
text-align: center;
width: 100%;
height: 100%;
padding-top: constant(safe-area-inset-top);
padding-top: env(safe-area-inset-top);
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: space-between;
}
</style>
</head>
<body>
<div class=”main”>
<div class=”top”>————顶部————</div>
<div class=”bottom”>————底部————</div>
</div>
</body>
</html>

利弊分析

  • 优点:符合标准的适配,灵活运用的话,H5在不同webview下打开都可以有完美的展现。且考虑了未来机型的适配。
  • 缺点:适配iPhone X时需要同时考虑其他iOS11机型下会不会受到影响。

以上只分析竖屏webview下的情况,横屏webview可以自行通过模拟器进行研究。接下来介绍一下模拟器的使用。

二. iPhone X模拟器 H5调试

介绍

加入适配代码后,在没iPhone X的情况下,可以通过iPhone X模拟器调试,像手机QQ/手机空间里的H5页面,可以通过在模拟器上安装手机QQ/手机空间app,然后调用Safari调试。

运行模拟器

系统要求:

  • Mac OS 10.12.6以上
  • Xcode9.0以上

步骤:在Xcode打开一个空白项目,选择iPhoneX模拟器,并点击运行按钮即可。

安装应用

在Xcode上直接编译客户端代码。或者让客户端开发编译一份模拟器版本的.app文件,将其拖进运行的模拟器屏幕,应用就成功安装了。

H5 调试

安装应用后,在应用里访问H5页面,然后打开Safari(需要开启Safari的开发工具),在菜单中选择开发-Simulator-页面地址 ,就可以用Safari的检查器对其作调试了。(当有多个页面地址,将鼠标移至二级菜单的某一个页面地址时,模拟器页面屏幕会有蓝色遮罩出现时则是选中了本页面地址),有些时候Safari识别不到模拟器,只需退出Safari,点一下模拟器屏幕,再重新打开Safari一般就会出来了。

这种方法对于我们要调试线上H5的其他问题、要测试其他iOS设备找不到真机时同样适用。

最后

经过分析,使用官方提供的新属性是三种里面较佳的方案,不过使用在适配过程中应当整体考虑所有机型,webview的类型及布局、还有横竖屏对contstant(safe-area-inset-X)/env(safe-area-inset-X)值的影响。

「实战案例!iPhone X适配方法」

  • 《如何适配iPhone X?来看滴滴出行的实战案例复盘!》
  • 《如何适配iPhone X?来看QQ 音乐这个实战案例复盘总结》
  • 《H5

您可能想查找下面的文章:

  • 腾讯实战案例!设计师如何从零开始做一款H5?
  • 腾讯出品!你离高效制作动画只差这一篇文章的距离
  • 新人想要入场视频类H5 设计?你需要了解这些
  • 腾讯设计师:极速适配 iPhone X 的技巧揭秘!
  • H5页面如何适配iPhone X ?腾讯设计师给出了通用解决方案!

相关文章

  • 2018-01-05关于highCharts加载出图表却不显示数据的问题
  • 2018-08-23实战案例!「滴滴出行」的商家红包项目经验总结
  • 2018-08-23超过8亿人使用的手机QQ,是如何做注册流程的?
  • 2017-08-06推荐一个前端工程师做的超酷交互式网站
  • 2017-08-06对淘宝网站的宝贝详情描述页页面设计的分析与看法(图)
  • 2017-08-0625个CSS框架、工具、软件及样板分享
  • 2017-08-06CSS XTHML书写规范以及常见问题总结(页面最优化)
  • 2017-08-06插图式的网站主页设计 网站设计新的趋势
  • 2017-08-06用frameset实现复杂的页面布局技巧小结
  • 2018-08-23高手帮你学规范!iOS和Android规范解析之按钮

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 高手私藏系列!有哪些能快速提高PPT排版水平的技巧?
    • 过来人经验!聊聊交互设计师怎么准备作品集
    • UI 入门基础!像素、分辨率和适配的知识全面总结
    • 设计师应该知道的 iOS 设备常见差异化设计
    • 经典好文!如何为拇指做设计?
    • 腾讯高级设计师:交互知识树系列之视觉思维
    • 整理了12款Javascript 表格控件(DataGrid)
    • 眼见不一定为实!设计中常见的 9 种视觉错觉!
    • 交互基础小课堂!移动端「搜索功能」设计超全面总结!
    • 免费高效!用 Paddy 让你的 Sketch 学会自动排版!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有