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

uni-app前端H5页面底部内容被tabbar遮挡的问题解决

使用 uni-app 框架开发的一个项目,发现 H5 端页面底部的内容被导航栏(Tabbar)遮挡,小程序端可以正常显示。

查阅资料得知,uni-app 新增了2个 CSS 变量:--window-top--window-bottom,详细说明如下:

APP 和小程序的导航栏和 tabbar 均是原生控件,元素区域坐标是不包含原生导航栏和 tabbar 的;而 H5 里导航栏和 tabbar 是 div 模拟实现的,所以元素坐标会包含导航栏和 tabbar 的高度。

为了优雅的解决多端高度定位问题,uni-app 新增了2个css变量:--window-top--window-bottom,这代表了页面的内容区域距离顶部和底部的距离。

举个实例,如果你想在原生 tabbar 上方悬浮一个菜单,之前写bottom:0。这样的写法编译到 h5 后,这个菜单会和 tabbar 重叠,位于屏幕底部。

而改为使用bottom:var(--window-bottom),则不管在 app 下还是在 h5 下,这个菜单都是悬浮在 tabbar 上浮的,这就避免了写条件编译代码。

使用方法:

官方给出的实例不够清晰,实际上这个属性,是在需要边距或者定位的元素上使用的,比如给.content元素设置下边距:

.content{ padding-bottom: var(--window-bottom); }

这样只会在 H5 端给.content元素增加一个 tabbar 的高度 的下边距, uni-app 默认给 tabbar 的高度是50px 。

如果 50px 的高度还不够,可以使用下面的方法,在 tabbar 高度的基础上再增加 20px :

.content{ padding-bottom: calc(var(--window-bottom) + 20px); }

具体什么意思,大家看一下下面 uni-app 给出的文档。

CSS变量

uni-app 提供内置 CSS 变量

CSS变量

描述

App

小程序

H5

--status-bar-height

系统状态栏高度

系统状态栏高度、nvue注意见下

25px

0

--window-top

内容区域距离顶部的距离

0

0

NavigationBar 的高度

--window-bottom

内容区域距离底部的距离

0

0

TabBar 的高度

  • var(--status-bar-height)变量在微信小程序环境为固定25px,在 App 里为手机实际状态栏高度。
  • 当设置"navigationStyle":"custom"取消原生导航栏后,由于窗体为沉浸式,占据了状态栏位置。此时可以使用一个高度为var(--status-bar-height)的 view 放在页面顶部,避免页面内容出现在状态栏。
  • 由于在 H5 端,不存在原生导航栏和 tabbar,也是前端 div 模拟。如果设置了一个固定位置的居底 view,在小程序和App端是在 tabbar 上方,但在 H5 端会与 tabbar 重叠。此时可使用--window-bottom,不管在哪个端,都是固定在 tabbar 上方。
  • 目前 nvue 在App端,还不支持--status-bar-height变量,替代方案是在页面onLoad时通过uni.getSystemInfoSync().statusBarHeight获取状态栏高度,然后通过 style 绑定方式给占位 view 设定高度。

代码块

快速书写 css 变量的方法是:在 css 中敲 hei,在候选助手中即可看到 3 个 css 变量。(HBuilderX 1.9.6 以上支持)

示例 1 - 普通页面使用 css 变量:

<template> <!-- HBuilderX 2.6.3+ 新增 page-meta, 详情:https://uniapp.dcloud.io/component/page-meta --> <page-meta> <navigation-bar /> </page-meta> <view> <view class="status_bar"> <!-- 这里是状态栏 --> </view> <view>状态栏下的文字</view> </view> </template> <style> .status_bar { height: var(--status-bar-height); width: 100%; } </style>
<template> <view> <view class="toTop"> <!-- 这里可以放一个向上箭头,它距离底部tabbar上浮10px--> </view> </view> </template> <style> .toTop { bottom: calc(var(--window-bottom) + 10px); } </style>
http://www.jsqmd.com/news/527877/

相关文章:

  • 5个强力方案:让老旧Mac用户的系统升级难题获得完美解决
  • Leather Dress Collection惊艳效果:Leather Short Dress短裙摆动轨迹与物理模拟真实度
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的高校校园超市的设计与实现
  • Phi-3-Mini-128K快速上手:3步完成本地部署,支持代码解释与长文档问答
  • 分析惠州派瑞林镀膜材料可定制规格的厂家,性价比高的排名 - 工业品牌热点
  • AI代码生成插件continue用vscode源码编译步骤
  • Redis 通常应用于哪些场景?
  • 没有独立显卡也能跑!在Windows10上零基础部署微软OmniParser屏幕解析模型(保姆级避坑指南)
  • JavaScript基础课程二十一、前端框架入门(Vue3 组合式 API)
  • Ryujinx技术障碍攻关指南:从入门到精通
  • 2025-2026年十大麻将机品牌最新榜单推荐:智能娱乐空间升级解决方案与品牌盘点 - 品牌推荐
  • 实时手机检测-通用实战案例:电商质检/安防巡检中手机识别落地应用
  • 2026年选购派瑞林镀膜材料定制厂家,哪家更值得选 - 工业推荐榜
  • 小白友好!Clawdbot配置Qwen3-32B代理的完整操作流程
  • 告别网页翻译!本地部署translategemma-12b-it,图片文字一键翻译55种语言
  • 揭秘RuView:WiFi信号实现无摄像头人体姿态追踪的技术革命
  • 二叉树的实现以及相关算法思路总结
  • MinIO双端口配置全指南:解决Web控制台和Java客户端同时访问的难题
  • 2026年无尘车间推荐,上海靠谱施工单位排名出炉 - 工业品网
  • 3张RTX 4090显卡也能玩转Qwen-Image?手把手教你低成本部署阿里最强开源文生图模型
  • 哈希表为什么能快到离谱?一文讲透哈希冲突、链式哈希和底层原理
  • Qwen3-Embedding-4B应用案例:快速实现文档相似度匹配
  • Day10| 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
  • Local AI MusicGen真实案例:为30秒短视频自动生成匹配情绪BGM
  • 哈尔滨啤酒一元换购,再互动揭秘哈啤如何用扫码破解窜货顽疾? - 品牌智鉴榜
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的购物商城系统的设计与实现
  • Nanbeige 4.1-3B Streamlit WebUI行业案例:农业科技问答助手
  • PHP伪随机数漏洞深度利用:从mt_rand()预测到token伪造的CTF通关教程
  • 一杯咖啡如何撬动城市文旅经济?
  • 2026 最新实战:现有 HarmonyOS 应用接入华为账号登录,全流程、代码与避坑一次讲透