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->模板->顶部选项卡。

属性说明:

属性类型必填默认值描述平台差异说明
colorHexColortab 上的文字默认颜色
selectedColorHexColortab 上的文字选中时的颜色
backgroundColorHexColortab 的背景色
borderStyleStringblacktabbar 上边框的颜色,可选值 black/white,black对应颜色rgba(0,0,0,0.33),white对应颜色rgba(255,255,255,0.33)。App 2.3.4+ 、H5 3.0.0+
listArraytab 的列表,详见 list 属性说明,最少2个、最多5个 tab

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

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

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

示例代码:

"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"
			}
		]
	}

 效果:

<think>好的,我现在需要帮助用户解决在uni-app的page.json中配置tabBar使用uview-plus的图标up-home的问题。首先,我得回忆一下uni-apptabBar配置方法。通常,在page.jsontabBar项里,每个tab项需要指定iconPathselectedIconPath,这两个路径通常是图片文件的相对路径。 但用户想直接使用uview-plus的图标,也就是UPHome组件,而不是本地图片。这里可能存在一个误区,因为uview-plus的图标是组件,不能在page.json里直接作为图片路径引用。因为page.json是静态配置文件,不支持动态组件或类名。 接下来,我需要确认uview-plus的图标使用方式。通常,像uView这样的UI库,图标可能需要通过组件或者字体类名来使用。例如,uview-plus可能使用字体图标,或者SVG组件。如果使用字体图标,可能需要通过类名来指定,但tabBar的iconPath只接受图片路径,所以这种方法可能行不通。 那有没有其他方法呢?比如,用户可能需要将uview-plus的图标转换为图片文件,然后引用这些图片的路径。或者,uview-plus可能提供了一种方式,将图标导出为base64或本地文件,这样可以在iconPath中使用。 但用户的问题是如何“直接”配置,可能他们希望不经过转换步骤。这时候可能需要检查uview-plus的文档,看看是否有相关的配置方法。例如,可能uview-plus有特定的图标名称可以直接在配置中使用,或者需要引入某种字体文件,然后在tabBar使用unicode字符。 假设检查文档后发现,uview-plus的图标需要以组件形式使用,那么在page.json中直接引用是不可能的,因为page.json不支持组件。这时候正确的做法应该是将需要的图标下载为图片,放在项目的静态资源目录中,然后在page.json中引用这些图片的路径。 或者,可能用户误解了uview-plus的图标使用方法,实际上他们应该在页面模板中使用<up-home>组件,而不是在tabBar的配置里。tabBar图标必须使用图片文件,因此需要将图标转换为图片格式,如PNG或SVG,并正确引用路径。 总结步骤应该是:首先确认uview-plus图标使用方式,然后根据结果决定是否需要将图标转换为图片文件,最后在page.json中配置这些图片的路径。同时提醒用户,直接使用组件在tabBar中不可行,必须使用图片路径。</think>在uni-app中配置`uview-plus`的`up-home`图标到`tabBar`需通过以下步骤实现: ### 一、确认图标类型 `uview-plus`的图标属于字体图标或组件,但`page.json`的`tabBar`仅支持本地图片路径。因此需将图标转换为本地图片文件。 ### 二、操作步骤 1. **获取图标文件** - 从`uview-plus`官方资源中找到`up-home`图标的SVG/PNG文件 - 或通过开发者工具检查元素导出图标为图片 2. **放置图标到项目** ```markdown 将图标文件(如`home.png``home-active.png`)放入项目静态目录: - `/static/tabbar/home.png` - `/static/tabbar/home-active.png`(选中状态) ``` 3. **配置page.json** ```json { "tabBar": { "list": [ { "pagePath": "pages/index/index", "text": "首页", "iconPath": "/static/tabbar/home.png", "selectedIconPath": "/static/tabbar/home-active.png" } ] } } ``` ### 三、注意事项 1. **图标尺寸要求**:建议使用`81px*81px`正方形图片,避免缩放模糊 2. **状态管理**:选中与非选中状态需使用不同图片文件 3. **路径正确性**:确保路径以`/static`开头且无拼写错误 ### 四、替代方案(动态场景) 如需动态切换图标,可在页面模板中使用`uview-plus`组件: ```html <template> <up-home v-if="isSelected"></up-home> <up-home-filled v-else></up-home-filled> </template> ``` > 直接引用组件在`page.json`中不可行,必须通过图片文件路径实现tabBar图标配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值