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

  • 微信拍一拍别人怎么设置文字(微信拍一拍别人怎么弄的)

    微信拍一拍别人怎么设置文字(微信拍一拍别人怎么弄的)

  • 支付宝怎么查电子身份证(支付宝怎么查电费缴费记录)

    支付宝怎么查电子身份证(支付宝怎么查电费缴费记录)

  • 华为4x儿童手表如何登录微信(华为5x儿童手表)

    华为4x儿童手表如何登录微信(华为5x儿童手表)

  • 手机健康码在哪里打开(手机里健康码在哪)

    手机健康码在哪里打开(手机里健康码在哪)

  • iphonex打电话对方听不到声音(iphoneX打电话对方听到声音很小如何调节)

    iphonex打电话对方听不到声音(iphoneX打电话对方听到声音很小如何调节)

  • tcp协议与udp协议区别(TCP协议与UDP协议各有什么特点?)

    tcp协议与udp协议区别(TCP协议与UDP协议各有什么特点?)

  • 苹果xr设置门禁卡(iphone xr 门禁卡 设置)

    苹果xr设置门禁卡(iphone xr 门禁卡 设置)

  • qq一起k歌没声音(为什么qq一起k歌点歌后就提示没歌了呢)

    qq一起k歌没声音(为什么qq一起k歌点歌后就提示没歌了呢)

  • 华为nova6se一分屏在哪里(华为nova6se评测视频)

    华为nova6se一分屏在哪里(华为nova6se评测视频)

  • 遥控器指示灯一直亮 用不了怎么办(遥控器指示灯一直闪烁 按键没反应)

    遥控器指示灯一直亮 用不了怎么办(遥控器指示灯一直闪烁 按键没反应)

  • 淘宝助力网络拥堵是什么意思(淘宝助力拥堵怎么解决)

    淘宝助力网络拥堵是什么意思(淘宝助力拥堵怎么解决)

  • 哔哩哔哩tv投屏不见了(哔哩哔哩tv投屏1080)

    哔哩哔哩tv投屏不见了(哔哩哔哩tv投屏1080)

  • 如何改善单极式极距型电容传感器的非线性(如何改善单极式变间距电容传感器的非线性)

    如何改善单极式极距型电容传感器的非线性(如何改善单极式变间距电容传感器的非线性)

  • 快手直播视频用什么软件(快手直播视频用什么软件下载)

    快手直播视频用什么软件(快手直播视频用什么软件下载)

  • 华为p40pro和苹果11对比(华为p40pro和苹果xs max对比)

    华为p40pro和苹果11对比(华为p40pro和苹果xs max对比)

  • 内存条卡槽坏了怎么修(内存条卡槽坏了怎么修复)

    内存条卡槽坏了怎么修(内存条卡槽坏了怎么修复)

  • 拼多多2000押金给退吗(拼多多押金多少钱能退)

    拼多多2000押金给退吗(拼多多押金多少钱能退)

  • vivoy83有红外线功能吗(vivoy83a红外线功能)

    vivoy83有红外线功能吗(vivoy83a红外线功能)

  • 小米9支持无线反向充电嘛(小米9支持无线投屏吗)

    小米9支持无线反向充电嘛(小米9支持无线投屏吗)

  • 新手机如何找回微信群(新手机如何找回微信密码)

    新手机如何找回微信群(新手机如何找回微信密码)

  • 华为手机一直语音说话,什么都点不了(华为手机一直语音播报还必须点两下)

    华为手机一直语音说话,什么都点不了(华为手机一直语音播报还必须点两下)

  • 织梦购物商品页判断用户未登录及弹出信息修改(织梦官网倒闭了吗)

    织梦购物商品页判断用户未登录及弹出信息修改(织梦官网倒闭了吗)

  • 开具增值税发票哪些情形不用交税?
  • 税收优惠指什么
  • 物流公司车子保险费怎么做账
  • 自产产品用于业务招待费
  • 资产总额是营业收入吗
  • 销售商品价格含税吗
  • 应收账款是开票减去货款吗对吗
  • 研发费用辅助账谁来做
  • 开办药品企业的要求
  • 提供教育服务免征增值税文件
  • 在途物资的会计凭证怎么做
  • 股票质押式回购交易业务
  • 单位食堂油烟管道清洗记录表
  • 收到借款利息怎么做会计分录
  • 含有商品编码的增值税普通发票如何开具?
  • 承包承租经营单位是什么意思
  • 居委会有没有税收政策
  • 防伪税控减免税款的会计分录
  • 收到测试费几分钱如何做账
  • 纳税人在什么情况下可以申请延期申报
  • 对境外支付佣金的规定
  • 发票进项抵扣有什么用
  • 试生产期间的账务处理
  • 纳税人证明怎么办理
  • 税前金额是不含税金额
  • 凭证金额多记了,已经入账了怎么办
  • 购买材料再进在建工程的账务处理
  • 注册中的商标转让
  • 为什么电脑开启了摄像头但是看不见
  • 原材料暂估分录
  • 厂房维修是否可以退税
  • 电脑出现一堆英文无法开机
  • 技嘉主板无法安装网卡驱动
  • 微软windows11iso
  • 电脑自动安装乱七八糟的软件win7
  • 公司一直没有收入怎么办
  • token过期处理
  • 哈阿公路
  • html列表去掉点
  • 研发和技术服务税率3%
  • curl命令上传文件到服务器
  • 非货币性资产投资的会计处理
  • mysql 触发器
  • 财务费用手续费在借方还是贷方
  • 研发支出属于什么类
  • 网上更正增值税申报表
  • 销售自己使用过的固定资产
  • 企业信息联网核查系统的意义
  • 预付账款是什么意思大白话
  • 商业汇票贴现条件有哪些
  • 包装物的账务处理例题
  • 办外经证需要交税吗
  • 红冲去年的成本怎么做账
  • 公司使用pos机
  • 残保金补申报需要交滞纳金吗
  • 什么是递延所得税?
  • 企业增资的流程
  • SQL Server的通用分页存储过程 未使用游标,速度更快!
  • 在windows中下列叙述正确的是什么
  • windows有哪些
  • Linux系统中quota磁盘命令的相关使用解析
  • 右键无法新建wps
  • win10系统下如何安装谷歌浏览器插件?win10系统下谷歌浏览器插件的安装方法图文教程
  • win8如何使用word
  • win10 edge浏览器崩溃
  • linux中比较文件链接数的变化
  • opengl画实体
  • unity3D游戏开发
  • js实现登录功能
  • jquery 属性
  • 创业要看的书
  • jquery easyui插件
  • unity快速接入第三方sdk
  • unity?
  • js 调试
  • 环保设备企业所得税优惠
  • 税务局打来电话
  • 现行增值税税率表2023
  • 国考报四川的去哪考
  • 农村房屋改造问题向谁举报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设