位置: IT常识 - 正文

h5适配ios顶部和底部安全区域的问题(h5适配iphonex)

编辑:rootadmin
h5适配ios顶部和底部安全区域的问题 一. 前言:

推荐整理分享h5适配ios顶部和底部安全区域的问题(h5适配iphonex),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:h5手机端适配,h5适配各种屏幕的方法,h5在安卓和ios的兼容,h5在安卓和ios的兼容,h5的适配,h5适配各种屏幕的方法,h5适配rem,h5适配iphonex,内容如对您有帮助,希望把文章链接给更多的朋友!

苹果手机从iphoneX之后,屏幕顶部都有一个齐刘海,iPhoneX 取消了物理按键,改成底部小黑条,如果不做适配,这些地方就会被遮挡,所以本文记录一下齐刘海与底部小黑条的适配方法。

二. 知识点学习

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

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

注意: 网页默认不添加扩展的表现是 viewport-fit=contain,需要适配 iPhoneX 必须设置 viewport-fit=cover,这是适配的关键步骤。

h5适配ios顶部和底部安全区域的问题(h5适配iphonex)

2)env() 和 constant() iOS11 新增特性,Webkit 的一个 CSS 函数,用于设定安全区域与边界的距离,有四个预定义的变量(单位是px):如果是微信小程序的话,viewport-fit默认是 cover

safe-area-inset-left:安全区域距离左边边界的距离safe-area-inset-right:安全区域距离右边边界的距离safe-area-inset-top:安全区域距离顶部边界的距离safe-area-inset-bottom:安全区域距离底部边界的距离

注意: 1)当 viewport-fit = contain 时 env() 是不起作用的,必须要配合 viewport-fit = cover 使用。对于不支持env() 的浏览器,浏览器将会忽略它。 需要做向后兼容。 2)env() 跟 constant() 需要同时存在,而且顺序不能换。

//适配底部小黑条.page_bottom { padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS<11.2 */ padding-bottom: env(safe-area-inset-bottom); /* 兼容iOS>= 11.2 */ }三. 适配步骤?1)设置网页在可视窗口的布局方式<meta name='viewport' content="width=device-width, viewport-fit=cover" />2)适配导航栏刘海屏

用的是vant的导航栏组件自带的 safe-area-inset-top 属性,因为van-nav-bar导航栏开启了fixed布局,导致页面下面的所有内容,直接上升到了页面的最顶部,部分内容会被van-nav-bar导航栏遮挡,我没用这个组件自带的placeholder占位,而是在外面又增加了一个class类名为navBarCon的div,给他一个和导航栏一样的高度,设置了 height:50px; 这样就会占位了

//适配导航栏刘海屏,用的是vant的导航栏组件,自带的 safe-area-inset-top 属性<template> <div class="root"> <div class="navBarCon"> <van-nav-bar title="收货地址" left-arrow fixed safe-area-inset-top @click-left="navBack" /> </div> </div></template><script>export default { data () { return {} }, mounted () {}}</script><style lang="scss" scoped>::v-deep { .van-nav-bar .van-icon { color: #333 !important; font-weight: 600; font-size: 20px; } .van-nav-bar__title { color: #333; font-weight: 600; } .van-nav-bar__content { height: 50px; }}.root { height: 100vh; .navBarCon { height: 50px; }}</style>

对于安卓机这里会有个问题,会没有状态栏的一个区域,就是wifi,时间那一栏 (这是个困扰了一段时间的问题),今天解决了来记录下

大体思路: 判断手机系统是否是Andriod,是的话增加一个padding-top的样式作为安卓的头部距离;ios的话还是让他自己适配

// 判断手机系统export const getNavigatorType = () => { let temp = '' var u = navigator.userAgent if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { temp = 'Android' } else { temp = 'ios' } return temp}<script>import { getNavigatorType } from '@/utils/tool.js' mounted () { let navigatorType = getNavigatorType() if (navigatorType === 'Android') { // 获取文档中的第一个class="van-nav-bar"的元素 document.querySelector('.van-nav-bar').style.paddingTop = '20px' } },</script>3)适配底部小黑条 fixed 元素的适配

吸底的情况(bottom=0)

<template> <div class="root"> <div class="page_bottom flexAround"> <div class="amount"> <span>合计:</span> <span class="red">¥</span> <span class="total_money red">{{ total_money }}</span> </div> <div class="payBtn" @click="confirmOrder">提交订单</div> </div> </div></template><script>export default { data () { return {} }, mounted () {}}</script><style lang="scss" scoped>/* 这个方案需要吸底条必须是有背景色的,因为扩展的部分背景是跟随外容器的,否则出现镂空情况。*/.page_bottom { position: fixed; left: 0; right: 0; bottom: 0; height: 45px; /*暂时发现安卓小屏手机安全区为0 && 不带单位的话padding-bottom会失效,写一个兜底, 并写在最上面;f12发现css样式如果都给height设置样式,会依次往下,用最底下的一个样式,如果最下面的没失效,依次往上查找,所以兜底的写在最上面 */ height: calc(45px + constant(safe-area-inset-bottom)); /* 直接扩展高度,因为padding-bottom是内边距 */ height: calc(45px + env(safe-area-inset-bottom)); /* 直接扩展高度 */ background: #fff; padding: 0 11px 0 20px; box-sizing: border-box; padding-bottom: constant(safe-area-inset-bottom); /*兼容 iOS<11.2 */ padding-bottom: env(safe-area-inset-bottom); /* 兼容iOS>= 11.2*/}.flexAround { display: flex; justify-content: space-between; align-items: center;}</style>四:结语

为了方便维护使用,可以把顶部导航栏封装成一个子组件,在父组件中调用

推荐 fixed元素的适配 bottom=0和非0的情况 适配底部小黑条 yidongduanh5安全区适配 如何解决移动端的安全区域为0的问题

本文链接地址:https://www.jiuchutong.com/zhishi/283993.html 转载请保留说明!

上一篇:【环境搭建】使用nvm下载node后npm不能使用(hue环境搭建)

下一篇:凤凰城天港国际机场鸟瞰图,亚利桑那 (© Nearmap/Getty Images)(港田路凤凰城)

  • 小爱同学play和小爱同学AI区别(小爱同学play和二代哪个好)

    小爱同学play和小爱同学AI区别(小爱同学play和二代哪个好)

  • 苹果长按图标不出现删除(苹果长按图标不能移动)

    苹果长按图标不出现删除(苹果长按图标不能移动)

  • 小米airdots无法充电(小米airdots接触不良怎么办)

    小米airdots无法充电(小米airdots接触不良怎么办)

  • 拼多多缺货违规资金限制(拼多多缺货违规怎么申请不会被处罚)

    拼多多缺货违规资金限制(拼多多缺货违规怎么申请不会被处罚)

  • 注册新微信号好友辅助都不符合,怎么办(注册新微信号好友辅助验证怎么弄)

    注册新微信号好友辅助都不符合,怎么办(注册新微信号好友辅助验证怎么弄)

  • 荣耀手机nfc功能怎么打开(荣耀手机nfc功能怎么使用公交卡)

    荣耀手机nfc功能怎么打开(荣耀手机nfc功能怎么使用公交卡)

  • 电脑12g内存比8g内存快多少(电脑12g内存比8g双通道好吗)

    电脑12g内存比8g内存快多少(电脑12g内存比8g双通道好吗)

  • 华为mate30桌面圆圈怎么取消(华为mate30桌面圆点怎么取消)

    华为mate30桌面圆圈怎么取消(华为mate30桌面圆点怎么取消)

  • 开机显示EMUI退不出(华为开机显示emui退不出)

    开机显示EMUI退不出(华为开机显示emui退不出)

  • Word文档字体竖着怎么设置(word文档字体竖排版怎么编辑)

    Word文档字体竖着怎么设置(word文档字体竖排版怎么编辑)

  • iphonex底部横条失灵(iphonex底部横条失灵怎么办)

    iphonex底部横条失灵(iphonex底部横条失灵怎么办)

  • 22w充电器能给18w手机充吗(22.5瓦可以充18w)

    22w充电器能给18w手机充吗(22.5瓦可以充18w)

  • 苹果7屏幕是lcd还是oled(苹果7屏幕是哪个厂家的)

    苹果7屏幕是lcd还是oled(苹果7屏幕是哪个厂家的)

  • 苹果的电话技术支持是什么(苹果的电话技术支持服务)

    苹果的电话技术支持是什么(苹果的电话技术支持服务)

  • 拼多多抢先拼单是什么(拼多多抢先拼单是真的吗)

    拼多多抢先拼单是什么(拼多多抢先拼单是真的吗)

  • 显卡能装2个吗(显卡可以安几个)

    显卡能装2个吗(显卡可以安几个)

  • oppoa11是闪充吗(oppoa11支不支持闪充)

    oppoa11是闪充吗(oppoa11支不支持闪充)

  • ipad防误触在哪里设置(ipad防误触在哪里关闭)

    ipad防误触在哪里设置(ipad防误触在哪里关闭)

  • str表示什么(str什么什么t)

    str表示什么(str什么什么t)

  • 抖音支持拼多多的商品吗(抖音拼多多代发)

    抖音支持拼多多的商品吗(抖音拼多多代发)

  • 文件设置为只读怎么弄(psd文件设置为只读)

    文件设置为只读怎么弄(psd文件设置为只读)

  • 启动盘怎么恢复成u盘(u盘变成启动盘怎么恢复)

    启动盘怎么恢复成u盘(u盘变成启动盘怎么恢复)

  • 苹果人像模式在哪(苹果人像模式在哪里打开)

    苹果人像模式在哪(苹果人像模式在哪里打开)

  • 超详细的激光点云地面分割(可行驶区域提取)方案(激光点图片)

    超详细的激光点云地面分割(可行驶区域提取)方案(激光点图片)

  • 进项税额转出要交企业所得税吗
  • 收取商标权使用费分录
  • 综合所得申报怎么作废
  • 调整上年度损益
  • 上期有留抵进项税额,本期如何转,如何做账
  • 差额发票能不能报销
  • 资产项目有
  • 金蝶固定资产折旧怎么修改
  • 土地增值税清算利息扣除规定
  • 支付退货款现金流怎么做
  • 企业购买房产如何列入投资计划的
  • 个人独资企业的债务由谁承担
  • 应付账款不用付怎么处理
  • 政府补助收入总额等于
  • 新车车牌照
  • 工伤保险费的缴纳,以下正确的是
  • 特许权使用费个税计算公式
  • 企业销售净利润较低说明什么
  • 代开的专用发票附加税该怎么申报?
  • 12月份奖金怎么扣个税
  • 机械租赁费如何开
  • 长期借款费用资本化
  • 报销时可以一个人报销吗
  • 劳务费个人所得税税率表2023最新
  • 会计审核票据如何签字
  • 存出投资款是什么凭证
  • PHP:oci_result()的用法_Oracle函数
  • 受托方代收代缴的消费税计入成本吗
  • 代收消费税计算
  • pps是啥文件
  • 资金占用利息会计处理
  • linux的系统配置文件
  • 会计账簿登记错误怎么办
  • 公司偷税漏税有哪些表现形式
  • 捐钱扶贫
  • 企业租赁房屋怎么开票
  • react中路由有哪些常用组件
  • php模板教程
  • php图片上添加文字的方法
  • 前端框架三大框架
  • 应付利息和利息支出什么时候用
  • 物流公司修理班的管理有那些书
  • 工程公司收到工程款会计分录
  • 减按10%的税率是什么意思
  • 直接人工费和应付职工薪酬
  • 国内源码平台
  • 业务招待费列支不规范
  • mysql怎么修改
  • 固定资产一次性扣除账务处理
  • 新领的发票怎么导入uk开票系统
  • 进口免税产品如何开票
  • 认购股份的形式主要有
  • 税控盘反写怎么操作流程
  • 明细分类账怎么做表格
  • 我国开征股票交什么税
  • 简单谈谈设计与市场的关系
  • winxp系统怎么投屏
  • win7系统开机后很卡什么原因
  • Cpqset.exe是什么系统进程 Cpqset有啥作用
  • frameworkservic.exe是什么进程 有什么作用 frameworkservic进程查询
  • 淘宝win10和正版的有什么区别
  • 怎么看win7
  • win10win8
  • 如何解决windows副本不是正版
  • cocos 2d x
  • android sdk platform要安装吗
  • unity 数学
  • 详解Javascript ES6中的箭头函数(Arrow Functions)
  • python内置函数什么用来返回序列中的最大元素
  • python中requests小技巧
  • Unity 相关经典博客资源总结(持续更新)
  • unity 3d教程
  • JavaScript中的math.pi
  • android:testonly="true"
  • jquery实现全选
  • python的例子
  • python如何入门
  • 国家税务局总局政策咨询
  • 税务总局绩效管理四大板块
  • 纪律作风如何形容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设