目录

  • 前言
  • 什么是自定义导航栏
  • 自定义导航栏
    • 取消默认导航栏或原生导航栏
      • 全局取消原生导航栏
      • 单页面取消原生导航栏
      • 取消原生导航栏后是这样的
    • 自定义导航栏
  • 自定义导航栏组件

前言

  • Hbuilder X 2.7.14.20200618

什么是自定义导航栏

默认导航栏或原生导航栏是啥样的,你懂的。

但,我想给导航栏加个背景图,比如这样:

我想给导航栏背景设置成渐变,比如这样:

这时候就需要自定义导航栏。

自定义导航栏

自定义导航栏的中心思想是:

  1. 取消默认导航栏或原生导航栏。
  2. 自定义导航栏,并放置到正确位置。

取消默认导航栏或原生导航栏

取消默认导航栏或原生导航栏有两个方式:

  1. 全局取消原生导航栏
  2. 单页面取消原生导航栏

全局取消原生导航栏

在 pages.json 的 globalStyle 里有个 navigationStyle 配置项,默认是default。navigationStyle=default 时,所有页面均为原生导航栏;navigationStyle=custom时,所有页面都没有原生导航栏。

...
"globalStyle": {..."navigationStyle": "custom",...
},
...

单页面取消原生导航栏

在 pages.json 的 pages 配置项下每个页面均有个 navigationStyle 配置项,默认是default。navigationStyle=default 时,该页面均为原生导航栏;navigationStyle=custom时,该页面都没有原生导航栏。

...
"pages": [ {"path" : "pages/index/index","style" : {"navigationBarTitleText" : "首页","navigationStyle":"custom",...}},...
],
...

取消原生导航栏后是这样的

取消原生导航栏后,页面顶部直通状态栏区域。
由于窗体为沉浸式,因此页面占据了状态栏位置,导致页面顶部直通状态栏区域。

注意:在微信小程序里,右上角始的胶囊按钮不受取消原生导航栏设置的影响

自定义导航栏

自定义导航栏可以理解为出现在原生导航栏区域的页面元素。

假设要在导航栏中添加LOGO,实现如下效果:

  1. 在 pages.json 的 pages 配置项下, 修改 pages/index/index 页面的配置如下:
"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "uni-app","navigationStyle":"custom"}}
],
  1. pages/index/index 代码为
<template><view><!-- 自定义导航栏 --><view class="navBarBox"><!-- 状态栏占位 --><view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view><!-- 真正的导航栏内容 --><view class="navBar"><image class="logo" src="/static/logo.png" mode="scaleToFill"></image><view>我是导航栏标题</view></view></view><!-- 页面内容 --><view>我是页面内容</view></view>
</template><script>export default {data() {return {// 状态栏高度statusBarHeight: 0,// 导航栏高度navBarHeight: 82+11,};},props: {},//第一次加载时调用created() {//获取手机状态栏高度this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];},}
</script><style>
.navBarBox{}
.navBarBox .statusBar {}
.navBarBox .navBar {padding: 3rpx 50rpx;padding-bottom: 8rpx;display: flex;flex-direction: row;justify-content: center;align-items: center;
}
.navBarBox .navBar .logo {width: 82rpx;height: 82rpx;margin-right: 10rpx;
}
</style>

说明:

  • 页面加载后,计算导航栏高度。
  • 得到状态栏高度后,将状态栏高度赋值给状态栏占位元素。这样就空出了状态栏。注意状态栏的单位为px,其它地方使用的单位为rpx。
  • 导航栏中放置一个image元素,用于展示LOGO。再放一个view元素,用于展示标题。
  1. 运行到小程序模拟器,得到前面想要的效果。

自定义导航栏组件

在uni-app插件市场搜索导航栏插件,可以轻松实现自定义导航栏。
如果找不到合适的,可以按照前面的步骤自己编写。

【uni-app】自定义导航栏/标题栏相关推荐

  1. android 自定义标签导航栏,自定义导航栏app下载-自定义导航栏(Custom Navigation Bar) 安卓版v0.4.3-PC6安卓网...

    自定义导航栏(Custom Navigation Bar)app是款非常好用的实用工具,自定义导航栏能让你自己设置个性的导航栏,再也不用为单调的导航栏而发愁,独特且唯一,感兴趣的朋友就来下载自定义导航 ...

  2. uniapp中自定义导航栏

    相信很多小伙伴在使用uniapp进行多端开发的时候呢,在面对一些奇葩的业务需求的时候,uniapp给我们提供的默认导航栏已经不能满足我们的业务需求了,这个时候就需要我们自己自定义导航栏使用啦. 当然u ...

  3. 微信小程序自定义导航栏完整适配方案

    写这篇博客的背景 临近节日,产品想给小程序首页头部设置图片背景,这个只能自定义导航栏来实现 当然除了自定义背景图,还可以放置其他组件,按钮.搜索框等 实践部分设备状态栏.胶囊.间距的高度(仅供参考)( ...

  4. 修改自定义导航栏按钮文字内容的方法

    第一步在 pages.json 内部定义 原生导航栏搜索框和按钮 {"path": "pages/tabbar/dingdan/dingdan","s ...

  5. 分别用ToolBar和自定义导航栏实现沉浸式状态栏

    一.ToolBar 1.在build.gradle中添加依赖,例如: compile 'com.android.support:appcompat-v7:23.4.0' 2.去掉应用的ActionBa ...

  6. 记一次小程序自定义导航栏及加载动画的解决方案

    记一次小程序自定义导航栏及加载动画的解决方案 主要逻辑就是动态获取设备的 statusBarHeight 和 titleBarHeight,来设置导航栏的高度和 paddingTop ip6 ipx ...

  7. 【小程序】自定义导航栏

    这个需求要不是UI和我讲有其他小程序实现了,我都还以为小程序还不能做到自定义导航.还好是在设计阶段给出的需求,不然... 先看看效果吧 微信小程序自定义导航栏 开始接介绍用法: 1:配置app.jso ...

  8. uniapp自定义导航栏,高度,自定义组件

    设置自定义导航栏 :globalStyle 内 navigationStyle": "custom" 配置页面:pages.json "globalStyle& ...

  9. 微信小程序的自定义导航栏

    微信小程序的导航栏主要分为两个部分:状态栏和标题栏. 关于微信小程序的自定义导航栏也就是通过微信小程序官方提供的API接口来算出状态栏和标题栏的高度. 注意获取到的数值单位都是px. 首先要开启自定义 ...

最新文章

  1. 设置虚拟工作空间_建筑狂想曲 | 建筑学习生活空间虚拟设计工作营最终评图
  2. 《LeetCode力扣练习》第16题 C语言版 (做出来就行,别问我效率。。。。)
  3. Centos7.3 安装Mysql5.7并修改初始密码
  4. javascript——原型与原型链
  5. mysqli num php_php mysqli_num_rows函数怎么用
  6. REST是什么?如何实现RESTful?
  7. Spring Boot CommandLineRunner和ApplicationRunner
  8. 应用在核电站DCS系统的代码自动生成工具ModelCoder
  9. WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法
  10. 【笔记3】二维码扫码数据埋点
  11. python核心编程五——映像和集合
  12. 微信小程序实现文字跑马灯
  13. Servlet-ServletConfig对象
  14. linux(ubuntu) 查看系统设备信息
  15. 清华大学团队:人脸识别爆出巨大丑闻,15分钟解锁19款手机
  16. com词根词缀_英语词根字典 - 词根词缀大全 - 优词英语词根表
  17. Matlab 网络通信(TCP IP)
  18. 数据结构分类之什么是线性结构、非线性结构
  19. 旁注,跨库,CDN绕过之——旁注
  20. 2022-忙碌的一年

热门文章

  1. js截取最后一个斜杠之后的内容
  2. 关于mysql的wait_timeout参数 设置不生效的问题
  3. Android系统移植与驱动开发概述
  4. 被忽视但很实用的那部分SQL
  5. 系统性能调优(5)----Java循环与字符串代码优化
  6. vForum 2011 Beijing现场图文播报一
  7. StackExchange.Redis 访问封装类
  8. DWZ(JUI)的lookupGroup增加回调函数
  9. jquery数组(排序)
  10. 控件包含代码块(即 % ... %),因此无法修改控件集合。