位置: 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)(港田路凤凰城)

  • 真我gtneo2t有光学防抖吗(真我gtneo有光学防抖吗)

    真我gtneo2t有光学防抖吗(真我gtneo有光学防抖吗)

  • 微信视频背景虚化怎么关(微信视频背景虚化怎么关闭)

    微信视频背景虚化怎么关(微信视频背景虚化怎么关闭)

  • 腾讯视频竖屏怎么调成横屏(腾讯视频竖屏怎么变横屏)

    腾讯视频竖屏怎么调成横屏(腾讯视频竖屏怎么变横屏)

  • 菜鸟集卡省钱卡怎么获得(菜鸟月卡)

    菜鸟集卡省钱卡怎么获得(菜鸟月卡)

  • 美团支付宝付款的操作方法(美团支付宝付款显示当前无法支付怎么回事)

    美团支付宝付款的操作方法(美团支付宝付款显示当前无法支付怎么回事)

  • 淘宝如何隐藏订单(淘宝如何隐藏订单不被别人看见)

    淘宝如何隐藏订单(淘宝如何隐藏订单不被别人看见)

  • 文件损坏无法解压(文件损坏无法解压什么意思)

    文件损坏无法解压(文件损坏无法解压什么意思)

  • 美团差评骑手成立后骑手会受到什么惩罚(美团给骑手差评会受到怎么样的惩罚)

    美团差评骑手成立后骑手会受到什么惩罚(美团给骑手差评会受到怎么样的惩罚)

  • 为什么网盘分享链接会被取消(为什么网盘分享不了)

    为什么网盘分享链接会被取消(为什么网盘分享不了)

  • 公众号文字修改多久生效(公众号文字修改可以增字吗)

    公众号文字修改多久生效(公众号文字修改可以增字吗)

  • air pods可以连安卓手机吗(airpods可以连安卓手机吗)

    air pods可以连安卓手机吗(airpods可以连安卓手机吗)

  • 腾讯会议结束后会自动退出吗(腾讯会议结束后聊天记录怎么看)

    腾讯会议结束后会自动退出吗(腾讯会议结束后聊天记录怎么看)

  • 什么是晶体管(什么是晶体管的甲类、乙类和甲乙类工作状态?)

    什么是晶体管(什么是晶体管的甲类、乙类和甲乙类工作状态?)

  • 微信怎么收藏照片(微信怎么收藏照片到相册)

    微信怎么收藏照片(微信怎么收藏照片到相册)

  • 为什么qq小号扩列匹配失败了(为什么qq小号扩大不了)

    为什么qq小号扩列匹配失败了(为什么qq小号扩大不了)

  • 华为5g手机音量键在哪里(华为5g手机音量调节)

    华为5g手机音量键在哪里(华为5g手机音量调节)

  • 初始化igpu开启还是关闭(bios初始化igpu什么意思)

    初始化igpu开启还是关闭(bios初始化igpu什么意思)

  • 抖音注销后好友还有吗(抖音注销后好友还能看到我吗)

    抖音注销后好友还有吗(抖音注销后好友还能看到我吗)

  • 数据库管理系统是操作系统的一部分吗(数据库管理系统的主要功能)

    数据库管理系统是操作系统的一部分吗(数据库管理系统的主要功能)

  • 苹果手表蜂窝用处大吗(苹果手表蜂窝用流量吗)

    苹果手表蜂窝用处大吗(苹果手表蜂窝用流量吗)

  • 对方发朋友圈提醒功能(发朋友圈提到了对方,对方能知道吗)

    对方发朋友圈提醒功能(发朋友圈提到了对方,对方能知道吗)

  • 巴龙芯片是哪国的(巴龙处理器是什么)

    巴龙芯片是哪国的(巴龙处理器是什么)

  • 大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS(大学生网页设计大赛)

    大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS(大学生网页设计大赛)

  • 税务做定额
  • 固定资产清理借方余额是加还是减
  • 普票不能抵扣要坐在帐里吗
  • 当月开票可以当月缴税吗
  • 记账凭证附单据是有哪些
  • 集团内部资产调拨
  • 工商年报实缴出资额是实收资本吗
  • 非居民企业所得税税率10%
  • 支付宝怎么开个人增值税发票
  • 政府扶贫支出
  • 未收到发票暂估入库的进项税额可以暂估进原料成本吗
  • 小规模纳税人工资可以抵扣增值税吗
  • 原材料什么时候结转成本
  • 公司发放节日礼品
  • 跨省的分公司亏损需要缴纳所得税吗?
  • 工程类什么情况下可以三方询价
  • 私募基金管理人a向投资者推介私募产品,不合规
  • 旅游业务开什么发票
  • 会计报表指标也称为什么
  • 资本金结汇资金用途
  • 研发支出费用如何计算应交所得税?
  • 暂估收入的凭证怎么做
  • 工伤医疗费会计分录
  • 政府高薪补贴
  • 销方开具红字发票流程
  • 出口退免税的类型
  • 税基式减免的内容有哪些?
  • 收回借支款的账务处理
  • 事业单位非税收入怎么做账
  • bios界面进入
  • 按实际成本结转6日和7日的材料采购成本
  • 高新技术企业加计5%
  • echarts地图不同地区设置不同的颜色
  • 低值易耗品费用账务处理
  • 销售商品的结转
  • php根据日期显示星期几
  • element-ui tree
  • uniapp下拉
  • 管理费用未分配利润
  • 增值税附加税减免政策2022年
  • sql server递归查询
  • mysql的删除
  • 进项税额转出都需要开具红字发票吗
  • 异地预缴附加税会计分录
  • 长期股权投资资本公积增加记哪个会计科目
  • 合同权益如何进行转让
  • sqlserver2008数据库可疑
  • 名为股权转让实为房地产转让
  • 维修费成本怎么结转
  • 承租人违约押金怎么办
  • 对公账户的钱怎么用
  • 银行贷款如何做到量价平衡管理
  • 堤防维护费税率
  • 委托加工物资核算
  • 什么情况下说免贵
  • 做账财务费用负数
  • 管理费用处理的是
  • 百旺开发票清单
  • 公司折价购买的股票
  • 公司招待费用会计分录
  • 公司在筹备阶段怎么办
  • 哪些资产减值损失一经计提不得转回
  • mysql8.0创建函数
  • windows防病毒
  • win2008远程桌面闪退
  • xp启动加速
  • dllhost应用程序异常
  • win7安装无法将windows配置为在此计算机上运行
  • linux显示日期格式命令是
  • windows8如何使用
  • 置顶怎么折叠起来
  • js如何使用
  • js变量作用域
  • 国家税务总局河南省税务平台
  • 已知税率怎么求政府税收
  • 手表关税多少
  • 金税三期是什么内容
  • 国家税务总局河北地税局
  • 南通国资委网站首页
  • 注册税务师条件要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设