uni-app学习笔记二十一--pages.json中tabBar设置底部菜单项和图标

如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定一级导航栏,以及 tab 切换时显示的对应页。

在 pages.json 中提供 tabBar 配置,不仅仅是为了方便快速开发导航,更重要的是在App和小程序端提升性能。在这两个平台,底层原生引擎在启动时无需等待js引擎初始化,即可直接读取 pages.json 中配置的 tabBar 信息,渲染原生tab。

Tips

  • 当设置 position 为 top 时,将不会显示 icon
  • tabBar 中的 list 是一个数组,最少要配置2个、最多只能配置5个 tab,tab 按数组的顺序排序。
  • tabbar 切换第一次加载时可能渲染不及时,可以在每个tabbar页面的onLoad生命周期里先弹出一个等待雪花(hello uni-app使用了此方式)
  • tabbar 的页面展现过一次后就保留在内存中,再次切换 tabbar 页面,只会触发每个页面的onShow,不会再触发onLoad。
  • 顶部的 tabbar 目前仅微信小程序上支持。需要用到顶部选项卡的话,建议不使用 tabbar 的顶部设置,而是自己做顶部选项卡,可参考 hello uni-app->模板->顶部选项卡。

属性说明:

属性 类型 必填 默认值 描述 平台差异说明
color HexColor tab 上的文字默认颜色
selectedColor HexColor tab 上的文字选中时的颜色
backgroundColor HexColor tab 的背景色
borderStyle String black tabbar 上边框的颜色,可选值 black/white,black对应颜色rgba(0,0,0,0.33),white对应颜色rgba(255,255,255,0.33)。 App 2.3.4+ 、H5 3.0.0+

|----------|-----------|-------|---|----------------------------------------|
| list | Array | | | tab 的列表,详见 list 属性说明,最少2个、最多5个 tab |

其中 list 接收一个数组,数组中的每个项都是一个对象,其属性值如下:

属性 类型 必填 说明 平台差异
pagePath String 页面路径,必须在 pages 中先定义
text String tab 上按钮文字,在 App 和 H5 平台为非必填。例如中间可放一个没有文字的+号图标
iconPath String 图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 position 为 top 时,此参数无效,不支持网络图片,不支持字体图标
selectedIconPath String 选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 position 为 top 时,此参数无效
visible Boolean 该项是否显示,默认显示 App (3.2.10+)、H5 (3.2.10+)
iconfont Object 字体图标,优先级高于 iconPath App(3.4.4+)、H5 (3.5.3+)

tarBar写于page.json中,与pages,globalStyle并列

示例代码:

javascript 复制代码
"tabBar": {
		"color": "#999",
		"selectedColor": "#2B9939",
		"borderStyle": "white",
		"list": [
			{
				"pagePath" : "pages/index/index",
				"text": "首页",
				"iconPath": "/static/images/tabBar/home.png",
				"selectedIconPath": "/static/images/tabBar/home-h.png"
			},
			{
				"pagePath" : "pages/classfy/classfy",
				"text": "分类",
				"iconPath": "/static/images/tabBar/classify.png",
				"selectedIconPath": "/static/images/tabBar/classify-h.png"
			},
			{
				"pagePath" : "pages/user/user",
				"text": "我的",
				"iconPath": "/static/images/tabBar/user.png",
				"selectedIconPath": "/static/images/tabBar/user-h.png"
			}
		]
	}

效果:

相关推荐
ljt272496066118 分钟前
Compose笔记(三十八)--CompositionLocal
笔记·android jetpack
武子康6 小时前
Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖
java·开发语言·数据库·学习·mysql·spring·微服务
月阳羊7 小时前
【硬件-笔试面试题】硬件/电子工程师,笔试面试题-26,(知识点:硬件电路的调试方法:信号追踪,替换,分段调试)
笔记·嵌入式硬件·面试·职场和发展
Star在努力8 小时前
14-C语言:第14天笔记
c语言·笔记·算法
霜绛10 小时前
机器学习笔记(三)——决策树、随机森林
人工智能·笔记·学习·决策树·随机森林·机器学习
站住前面的二哈10 小时前
Cartographer安装测试与模块开发(三)--Cartographer在Gazebo仿真环境下的建图以及建图与定位阶段问题(实车也可参考)
学习·ubuntu
★YUI★11 小时前
学习游戏制作记录(克隆技能)7.25
学习·游戏·unity·c#
屁股割了还要学12 小时前
【C语言进阶】柔性数组
c语言·开发语言·数据结构·c++·学习·算法·柔性数组
woodykissme13 小时前
UG创建的实体橘黄色实体怎么改颜色?
学习·齿轮·ug建模
Feather_7413 小时前
从Taro的Dialog.open出发,学习远程控制组件之【事件驱动】
javascript·学习·taro