当前位置: 首页 > article >正文

uni-app获取安全区域

2024年8月2日
使用自定义导航栏的uni-app项目在真机演示时,可能会出现页面内容被手机的刘海或者状态栏给遮挡了,或者在小程序上给胶囊按钮给档住了。这时候就需要获取刘海屏状态了和胶囊按钮的高度来获取安全渲染区域.

1. CSS内置变量

来自uni-aap官网:https://uniapp.dcloud.net.cn/tutorial/syntax-css.html#css-变量

–status-bar-height: 系统状态栏高度
–window-top: 内容区域距离顶部的距离
–window-bottom: 内容区域距离底部的距离

  • 不同平台适配不一致,详细查阅参考地址

具体用例

避开刘海屏

//状态栏占位组件样式
.status_bar{
    height:var(--status-bar-height);
}

避开NavigationBar和TabBar的安全区域

//安全区域组件样式
.safeArea{
    margin-top:var(--window-top);
    margin-bottom:var(--window-bottom);
}

2. uni.getWindowInfo()

https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html#getwindowinfo-harmonyos-next-兼容性

获取窗口信息,基于本文我们需要的窗口信息为safeAreaInsets(安全区域与屏幕边的插入值)和safeArea(安全区域)
safeAreaInsets的属性有:

  • left 安全区域左侧插入位置
  • right 安全区域右侧插入位置
  • top 安全区顶部插入位置
  • bottom 安全区域底部插入位置
    safeArea的属性有:
  • width 安全区域的宽度,单位逻辑像素
  • height 安全区域的高度,单位逻辑像素

具体用例

获取一个去除状态栏、底部滑动条的渲染区域

<template>
    <view class='safeArea'></view>
</template>

<script>
    uni
     .createSelectorQuery()
     .select('.safeArea')
     .fields({ computedStyle: [ 'height','marginTop','marginBottom'] }, (data) => {
        //获取安全区域
        data.hetght=`${uni.getWindowInfo().safeArea.height}`
        //获取安全区域距离屏幕边的距离
        data.marginTop=`${uni.getWindowInfo().safeAreaInsets.top}`
        data.marginBottom=`${uni.getWindowInfo().safeAreaInsets.bottom}`
     })
     .exec()
</script>

http://www.kler.cn/a/401185.html

相关文章:

  • SpringCloud处理Websocket消息过长自动断开连接
  • [代码随想录Day16打卡] 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树
  • css数据不固定情况下,循环加不同背景颜色
  • 道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会
  • 表格的选择弹窗,选中后返显到表格中
  • Centos使用人大金仓ksql
  • 基于centos7.9搭建tmall商城
  • GRU(门控循环单元)详解
  • 图片画廊4 -- 使用Owl Carousel进行优化
  • 探索Python PDF处理的奥秘:pdfrw库揭秘
  • 设计模式之组合模式(营销差异化人群发券,决策树引擎搭建场景)
  • Excel——宏教程(2)
  • 基于Matlab的变压器仿真模型的建模方法(2):单相双绕组变压器的状态方程和仿真模型(附源代码)
  • 分享一下arr的意义(c基础)
  • 【UNIAPP】uniapp版图片压缩工具
  • UE5 材质里面画圆锯齿严重的问题
  • 深入理解电子邮件安全:SPF、DKIM 和 DMARC 完全指南
  • 【.net core】【sqlsugar】字符串拼接+内容去重
  • Linux 安装 jdk8
  • 嵌入式工作经验积累
  • 网络抓包工具tcpdump 在海思平台上的编译使用
  • Leetcode打卡:最少翻转次数使二进制矩阵回文II
  • 编程小记1 throw new RuntimeException(“错误信息“);
  • 跨平台WPF框架Avalonia教程 六
  • 缓存工具类编写
  • docker run怎么设置 entry point sleep?