tabBar(微信小程序)

小程序中tabBar的配置与使用详解,
文章介绍了tabBar在移动端应用中的作用,特别是在小程序中的常见配置,包括底部和顶部tabBar的区别。tabBar主要由六个部分组成,可以通过app.json配置list,包括pagePath、text、iconPath和selectedIconPath等属性。通过示例展示了如何创建和切换不同页面,以及如何设置选中和未选中状态的图标。

一.概念

tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。

小程序中通常将其分为: 底部 tabBar 顶部 tabBar

注意: tabBar中只能配置最少 2个、最多 5个 tab 页签当渲染顶部 tabBar 时,不显示 icon,只显示文本

二.tabBar由6部分组成

tabBar呢是由六部分组成的,分别是:

 这里面根据这些属性可以配置

 三.tabBar节点的配置项

四.每个 tab 项的配置选项

 说了这么多tabBard的配置项,那应该在哪儿写呢?往下看

配置简单tabBar

我们要在在app.json里面填写tabBar
声明节点配置list,最少创建两个tab页签
pagePath把之前做的页面路径写上去
在text里填写tab页签页名

我们来演示下效果

 

 可以看到,我们页面最下面出现了tabBar选项,我们点击之后可以来回切换页面

tabBar图标

我们可以创建一个图片文件夹,在这里放几个选中和未选中时的图片样式

 

将需要用到的小图标分为 3 组,每组两个,其中:

图片名称中包含 -active 的是选中之后的图标

图片名称中不包含 -active 的是默认图标

新建 3 个对应的 tab 页面 通过 app.json 文件的 pages 节点,快速新建 3 个对应的 tab 页面,示例代码如下:

​
"pages": 
[
 "pages/home/home",

 "pages/message/message",

 "pages/contact/contact"
]

​

其中,home 是首页,message 是消息页面,contact 是联系我们页面。

在 list 数组中,新增每一个 tab 项的配置对象。对象中包含的属性如下:

pagePath 指定当前 tab 对应的页面路径【必填】

text 指定当前 tab 上按钮的文字【必填】

iconPath 指定当前 tab 未选中时候的图片路径【可选】

selectedIconPath 指定当前 tab 被选中后高亮的图片路径【可选】


"tabBar": {
"list": [
    {

  "pagePath": "pages/home/home",

  "text": "首页",

  "iconPath": "/images/tabs/home.png",

  "selectedIconPath": "/images/tabs/home-active.png"

},{

  "pagePath": "pages/message/message",

  "text": "消息",

  "iconPath": "/images/tabs/message.png",

  "selectedIconPath": "/images/tabs/message-active.png"

},{

  "pagePath": "pages/contact/contact",

  "text": "联系我们",

  "iconPath": "/images/tabs/contact.png",

  "selectedIconPath": "/images/tabs/contact-active.png"

}]
}

我们写完之后,进行一个效果演示

 可以看到在我们选中的时候,图片也会发生变化,页面也会跳转过来

### 解决 UniApp 开发的微信小程序中自定义底部 TabBar 出现闪烁的问题 为了有效处理 UniApp 中开发的小程序自定义底部 TabBar 显示时可能出现的闪烁现象,可以采取以下措施: 当应用启动时,应立即隐藏默认的 TabBar 来防止不必要的显示干扰[^2]。此操作可以在 `App.vue` 文件中的生命周期钩子函数内完成。 对于页面间的跳转逻辑优化也至关重要。在进入首页 (`index`) 页面之前应当先调用 `uni.hideTabBar()` 方法来确保 TabBar 不会突然显现造成视觉上的突兀变化;之后再利用原生 API 如 `wx.switchTab` 完成不同 Tab 之间的平滑过渡而不会触发重新渲染从而减少闪烁的可能性。 另外一种更为灵活的方式是在 App 启动阶段依据特定条件(例如用户的认证状态)决定初始加载哪个页面以及是否要显示 TabBar。如果用户未登录,则重定向至登录界面并保持 TabBar 隐藏;反之则正常切换到主页并恢复 TabBar 的可见性[^4]。 最后值得注意的是,在某些情况下可以通过调整 CSS 样式属性如设置透明度动画效果等方式进一步改善用户体验,但这通常不是根本性的解决方案而是辅助手段之一[^3]。 ```javascript // 在 App.vue 的 onLaunch 生命周期方法中实现基于 token 存在与否控制首次打开的应用场景 onLaunch: function () { const token = this.$store.state.userinfo.token; // 判断是否有 token ,无则前往登录页,有则直接去往 index 主页 !token ? uni.reLaunch({ url: "pages/login/login" }) : uni.switchTab({ url: "/pages/index/index", success: () => { // 成功后可选地再次尝试隐藏 tabBar 达到更稳定的体验 setTimeout(() => { uni.hideTabBar(); }, 0); } }); } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值