场景

由于iPhoneX去掉了物理按键,改为了底部小黑条,这就会导致屏幕适配问题,最常见的场景就是底部fixed的元素被阻挡的情况。对于这种问题,我们一般采取css或js的处理方式(适用于h5,小程序)。

css适配方案(推荐)

第一步:设置网页的头部标签

viewport-fit:IOS11新增的特性,是为了iPhoneX而对meta标签做出的一个拓展属性。目前有三个值:

contain 可视窗口完全包含网页内容

cover:网页内容完全覆盖可视窗口

auto:默认值,跟 contain 表现一致

注意:适配的关键在于必须设置viewport-fit=cover

第二步:将页面主体设置在安全区域内

这一步视实际场景而定,可以不设置,带来的影响就是会出现底部区域的内容会被挡住;

body {

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

padding-bottom: env(safe-area-inset-bottom);

}

env() 和 constant()是IOS11新增的css函数,有四个预定义的变量safe-area-inset-bottom、safe-area-inset-top、safe-area-inset-left、safe-area-inset-right,分别是安全区域到各边界的距离,此时我们只需要关心afe-area-inset-bottom(横竖屏的情况下是不一样的)。对于不支持这两个属性的情况,浏览器会忽略。

注意,constant()在IOS11.2之后是不可使用的,因此要向后兼容,即env(),且二者位置不可调换;

constant(): 兼容IOS < 11.2

env(): 兼容IOS >= 11.2

第三步:设置目标元素(fixed)的高度

对于目标元素,可设置bottom、padding-bottom、margin-bottom 均可:

.fixed {

bottom: constant(safe-area-inset-bottom);

bottom: env(safe-area-inset-bottom);

// 其余同

}

或者新增一个height = constant(safe-area-inset-bottom)空白区块亦可,方案多样。

JS适配方案

通过判断机型给底部fixed元素添加padding-bottom,或者新增个空白区块,此处不多余赘述。

function isIphoneX(){

return /iphone/gi.test(window.navigator.userAgent) &&

window.devicePixelRatio &&

window.devicePixelRatio === 3 &&

window.screen.width === 375 &&

window.screen.height === 812;

}

本文地址:https://blog.csdn.net/weixin_43989257/article/details/107304018

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

vue x 兼容iphone_详解关于移动端兼容iPhoneX底部小黑条相关推荐

  1. ant design pro vue 动态路由 流程详解

    ant design pro vue 动态路由 流程详解 前言 流程图 流程1 src/permission.js 流程2 src/store/modules/user.js 流程3 src/perm ...

  2. 加载vue文件步骤_vue中.vue文件解析步骤详解

    这次给大家带来vue中.vue文件解析步骤详解,vue中.vue文件解析的注意事项有哪些,下面就是实战案例,一起来看一下. 我们平时写的 .vue 文件称为 SFC(Single File Compo ...

  3. 详解如何基于Arduino兼容板Teensy LC实现虚拟键盘与鼠标

    目录 前言 硬件环境 环境配置 1. 下载Teensy烧录程序 2 下载TeensyDuino 使用方法 1 模拟键盘 1.1 Keyboard库函数介绍: 1.2 Keyboard键码表: 1.3 ...

  4. 实例化vue发生了什么?(详解vue生命周期)

    实例化vue发生了什么?(详解vue生命周期) 本文将对vue的生命周期进行详细的讲解,让你了解一个vue实例的诞生都经历了什么~ 我在Github上建立了一个存放vue笔记的仓库,以后会陆续更新一些 ...

  5. vue中mint-ui使用详解

    这次给大家带来vue中mint-ui使用详解,vue中mint-ui使用的注意事项有哪些,下面就是实战案例,一起来看一下. mint-ui在vue中的使用,供大家参考,具体内容如下 首先放上mint- ...

  6. vue基础扩展8--solt详解

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><title& ...

  7. Vue路由传参详解(params 与 query)

    Vue路由传参详解(params 与 query) 前言: 路由传参分为 params 传参与 query 传参 params 传参类似于网络请求中的 post 请求,params 传过去的参数不会显 ...

  8. vue如何过滤html标签,Vue过滤器filters使用详解

    这次给大家带来Vue过滤器filters使用详解,Vue过滤器filters使用的注意事项有哪些,下面就是实战案例,一起来看一下. 示例代码 采用vue单文件组件,使用moment插件格式化日期 {{ ...

  9. mixins php,vue的mixins属性详解

    这篇文章主要介绍了vue的mixins属性详解,现在分享给大家,也给大家做个参考. 首先先给出官网 https://vuejs.org/v2/guide/mixins.html 今天在开发项目的时候要 ...

最新文章

  1. Windows Phone 7 隔离存储空间“.NET研究”资源管理器
  2. 计算机英语 自我介绍,计算机面试英文自我介绍范例
  3. multi mysql_mysqld_multi 的使用方法
  4. J-Rooms及时会议室 v4.5.5333.1104
  5. jdk的ServiceLoader
  6. Android仿探探卡片拖拽,[转]仿探探拖拽卡片效果Vue3实现
  7. GIS专家:云GIS带来的最大影响是体系架构
  8. 超赞!UX写手必备技能
  9. FPGA基础知识21(PL控制PS端DDR的设计)
  10. php在线拍照裁切,基于cropper.js封装vue实现在线图片裁剪组件的功能
  11. 开路电压法与电流积分法
  12. html表单的put方法,form表单put、delete方式提交处理
  13. 华硕笔记本FH5900VQ 如何利用Winflash更新BIOS
  14. eclipse 运行hadoop wordcount
  15. 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯
  16. 谷歌上做SEO价钱大概多少,Google优化怎么收费?
  17. 你好,你是谁,可不可以向我出示源代码让我确认身份
  18. iphone文件连接smb服务器,实用!三种iPhone与Windows电脑互传文件操作技巧,建议收藏...
  19. c++多态之 运行时多态与编译时多态
  20. python中除号怎么写_除号怎么写

热门文章

  1. 微信公众号接口测试教程(不需要注册)
  2. 携手共进——再答丁又专老师
  3. 第78节:Java中的网络编程(上)
  4. 录屏居然也可以用iTab新标签页
  5. 【读书笔记】工作技巧-科学笔记,如何有效阅读一本书:超实用笔记读书法(日本.奥野宣之)_20190608
  6. html引入babel-polyfill,babel-polyfill的引用和使用
  7. 案例广告登陆机场,华为云是野心还是雄心?
  8. kubernetes存储(一)——Configmap配置管理,Secret配置管理
  9. python调用百度地图api定位_逆地理编码 rgc 反geo检索 | 百度地图API SDK
  10. flowable工作流-BPMN流程部署