navigationbar底部横线本质是titlenview在ios/android系统渲染时自带的阴影/分隔线,非css可直接控制的边框;需同时设置navigationstyle: "custom"和app-plus中titlenview: false才能彻底去除。

uni-app中NavigationBar底部横线的本质是什么
这根横线不是“边框”,而是原生导航栏(titleNView)在 iOS 和部分 Android 系统上渲染时自带的阴影/分隔线,它由系统级 UI 组件控制,CSS 无法直接选中或覆盖。你在 H5 或 App 端看到的那条细线,本质是 titleNView 的默认视觉表现,不是页面 DOM 元素,所以写 .uni-navbar::after { display: none } 没用。
App端去掉NavigationBar底部横线的正确方式
必须同时关闭原生导航栏并禁用其阴影渲染,只靠 navigationStyle: "custom" 不够——它只是让框架不注入导航栏 DOM,但若 titleNView 仍开启,系统仍会画一条线。
- 在
pages.json对应页面的style下,设"navigationStyle": "custom" - 在同级的
"app-plus"节点中,明确加"titleNView": false - 完整示例:
{
"path": "pages/home/home",
"style": {
"navigationStyle": "custom",
"app-plus": {
"titleNView": false
}
}
}
注意:仅设 titleNView: false 而不设 navigationStyle: "custom",H5 端可能仍有占位;两者缺一不可。
微信小程序端没有这根横线,但有等效干扰项
小程序原生导航栏本身不画横线,但如果你用了自定义导航栏组件(比如 <uni-nav-bar></uni-nav-bar>),它默认带 box-shadow 或 border-bottom,容易误认为是“NavigationBar横线”。
- 检查你自定义组件的样式,重点搜
border-bottom、shadow、height相关声明 - 若用
<uni-nav-bar></uni-nav-bar>,加:deep(.uni-nav-bar__content) { box-shadow: none; border-bottom: none; } - 小程序平台无需处理
titleNView,该字段对其完全无效
H5端横线其实是浏览器默认样式叠加导致
H5 端那条线往往来自两层叠加:一是 uni-app 框架为兼容性注入的 padding-top 占位,二是某些移动端浏览器(如 Safari)对 <header></header> 或伪元素的默认边框行为。
- 必须在页面样式中重置:
page { margin: 0; padding: 0; } - 加上:
page::before { display: none !important; }(干掉 uni-app 注入的占位伪元素) - 如果用了
navigationStyle: "custom",再额外加:body { padding-top: 0 !important; }
别指望单靠全局 CSS 一劳永逸——H5 渲染链路长,DOM 层、框架注入、浏览器 UA 行为都参与其中,必须组合清除。











