vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

​1.iPhoneX的介绍屏幕尺寸我们熟知的iPhone系列开发尺寸概要如下:△iPhone各机型的开发尺寸转化成我们熟知的像素尺寸:△每个机型的多维度尺寸倍图其实就是像素尺寸和开发尺寸的倍率关系,但这只是外在的表现。倍图核心的影响因素在于PPI(DPI),了解屏幕密度与各尺寸的关系有助于我们深度理解倍率的概念:《基础知识学起来!为设计师量身打造的DPI指南》iPhone8在本次升级中,屏…

大家好,又见面了,我是你们的朋友全栈君。

​1.  iPhoneX的介绍

屏幕尺寸

我们熟知的iPhone系列开发尺寸概要如下:

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

△ iPhone各机型的开发尺寸

转化成我们熟知的像素尺寸:

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

△ 每个机型的多维度尺寸

倍图其实就是像素尺寸和开发尺寸的倍率关系,但这只是外在的表现。倍图核心的影响因素在于PPI(DPI),了解屏幕密度与各尺寸的关系有助于我们深度理解倍率的概念:《基础知识学起来!为设计师量身打造的DPI指南》

iPhone8在本次升级中,屏幕尺寸和分辨率都遗传了iPhone6以后的优良传统;

然而iPhone X 无论是在屏幕尺寸、分辨率、甚至是形状上都发生了较大的改变,下面以iPhone 8作为参照物,看看到底iPhone X的适配我们要怎么考虑。

我们看看iPhone X尺寸上的变化:

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

2.  iPhoneX的适配—安全区域(safe area)

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

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

核心内容应该处于 Safe area 确保不会被设备圆角(corners),传感器外壳(sensor housing,齐刘海) 以及底部的 Home Indicator 遮挡。也就是说 我们设计显示的内容应该尽可能的在安全区域内;

3.  iPhoneX的适配—适配方案viewport-fit

3.1  PhoneX的适配,在iOS 11中采用了viewport-fit的meta标签作为适配方案;viewport-fit的默认值是auto。

viewport-fit取值如下:

auto

默认:viewprot-fit:contain;页面内容显示在safe area内

cover

viewport-fit:cover,页面内容充满屏幕

viewport-fit meta标签设置(cover时)

3.2  css constant()函数 与safe-area-inset-top & safe-area-inset-left & safe-area-inset-right & safe-area-inset-bottom的介绍

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

如上图所示 在iOS 11中的WebKit包含了一个新的CSS函数constant(),以及一组四个预定义的常量:safe-area-inset-left, safe-area-inset-right, safe-area-inset-top和 safe-area-inset-bottom。当合并一起使用时,允许样式引用每个方面的安全区域的大小。

3.1当我们设置viewport-fit:contain,也就是默认的时候时;设置safe-area-inset-left, safe-area-inset-right, safe-area-inset-top和 safe-area-inset-bottom等参数时不起作用的。

3.2当我们设置viewport-fit:cover时:设置如下

body {

padding-top: constant(safe-area-inset-top); //为导航栏+状态栏的高度 88px

padding-left: constant(safe-area-inset-left); //如果未竖屏时为0

padding-right: constant(safe-area-inset-right); //如果未竖屏时为0

padding-bottom: constant(safe-area-inset-bottom);//为底下圆弧的高度 34px

}

4.   iPhoneX的适配—高度统计

viewport-fit:cover + 导航栏

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

5.iPhoneX的适配—媒体查询

注意这里采用的是690px(safe area高度),不是812px;

@media only screen and (width: 375px) and (height: 690px){

body {

background: blue;

}

}

6.iphoneX viewport-fit  问题总结

1.关于iphoneX 页面使用了渐变色时;如果viewport-fit:cover;

1.1在设置了背景色单色和渐变色的区别,如果是单色时会填充整个屏幕,如果设置了渐变色 那么只会更加子元素的高度去渲染;而且页面的高度只有690px高度,上面使用了padding-top:88px;

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

body固定为:

this is subElement

1.单色时:

*{padding:0;margin:0;

}body{background:green;padding-top:constant(safe-area-inset-top);//88px/*padding-left: constant(safe-area-inset-left);*/

/*padding-right: constant(safe-area-inset-right);*/

/*padding-bottom: constant(safe-area-inset-bottom);*/

}

2.渐变色

*{padding:0;margin:0;

}body{background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ffd54f), to(#ffaa22));padding-top:constant(safe-area-inset-top);//88px/*padding-left: constant(safe-area-inset-left);*/

/*padding-right: constant(safe-area-inset-right);*/

/*padding-bottom: constant(safe-area-inset-bottom);*/

}

解决使用渐变色 仍旧填充整个屏幕的方法;CSS设置如下

vue x 兼容iphone_作为前端你必须知道的iPhoneX适配

Designing Websites for iPhone X: Respecting the safe areas

}html, body{height:100%;

}body{padding-top:constant(safe-area-inset-top);padding-left:constant(safe-area-inset-left);padding-right:constant(safe-area-inset-right);padding-bottom:constant(safe-area-inset-bottom);

}.content{background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ffd54f), to(#ffaa22));width:100%;height:724px;

}

this is subElement

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129524.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OllyDBG 入门

    OllyDBG 入门一 OllyDBG 的安装与配置 OllyDBG1 10 版的发布版本是个 ZIP 压缩包 只要解压到一个目录下 运行 OllyDBG exe 就可以了 汉化版的发布版本是个 RAR 压缩包 同样只需解压到一个目录下运行 OllyDBG exe 即可 OllyDBG 中各个窗口的功能如上图 简单解释一下各个窗口的功能 更详细的内容可以参考 TT 小组翻译的中文帮助 反汇编窗口 显示被调试程序的反汇编代码 标题栏上的地址 HEX 数据 反汇编 注释可以通过在窗口中右击出现的菜单界面选项 gt 隐藏

    2025年5月9日
    6
  • powermodule_getsocketopt

    powermodule_getsocketopt严格模式ES6的模块自动采用严格模式,不管你有没有在模块头部加上"usestrict";。严格模式的限制如下变量必须声明后再使用函数的参数不能有同名属性,否则报错不能

    2022年7月30日
    5
  • Beta版是什么意思

    Beta版是什么意思

    2021年10月18日
    58
  • cnpm安装教程_安装命令提示符

    cnpm安装教程_安装命令提示符1、确认npm是否安装成功:win+R,输入cmd,打开命令窗口2、命令行窗口输入:node-v,显示有版本号,则安装成功3、安装cnpm:输入npminstall-gcnpm-registry=https://registry.npm.taobao.org4、安装完成后,输入cmpm-v,检查是否安装成功如果出现cnpm不是内部或者外部命令提示,请继续以下操作5、配置环境变量打开系统环境变量,增加如下配置,则修改成功回到命令行窗口输入cn..

    2022年10月16日
    3
  • 3d slicer matlab,3DSlicer3Architecture架构介绍.ppt

    3d slicer matlab,3DSlicer3Architecture架构介绍.ppt3DSlicer3Architecture架构介绍Slicer3ArchitectureNA-MICArchitectureSlicer3“ObserverMVC”PatternMRML(Model)ForSceneDescriptionandApplicationStateMRMLNodesarePersistentandUndoableScenea…

    2025年6月10日
    6
  • arthas 案例: 动态更新应用Logger Level

    来源: case-ognl-update-logger-level案例: 动态更新应用Logger Level在这个案例里,动态修改应用的Logger Level。查找UserController的ClassLoadersc -d com.example.demo.arthas.user.UserController | grep classLoaderHash$ sc -d com.example.demo.arthas.user.UserController | grep classLo

    2022年3月1日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号