UniApp 自定义微信小程序 TabBar 导航栏

****

在开发微信小程序时,tabBar 是一种常用的底部导航栏组件,它允许用户在不同的页面之间进行切换。UniApp 作为一个跨平台的开发框架,允许开发者使用相同的代码来编译生成多个平台(包括微信小程序、Android、iOS)的应用。UniApp 提供了对 tabBar 的自定义功能,使开发者能够根据需求定制底部导航栏。

本文将介绍如何在 UniApp 中自定义微信小程序的 tabBar 导航栏,并展示代码实现。

一、创建 UniApp 项目

  1. 打开 HBuilderX,选择 创建项目
  2. 选择 UniApp 项目,填写项目名称,选择合适的模板(可以选择 Hello UniApp 模板)。
  3. 完成项目创建后,打开项目文件夹,找到 pages.json 配置文件。

二、配置 TabBar

在 UniApp 中,tabBar 是通过在 pages.json 文件中进行配置的。默认情况下,UniApp 提供了一个简单的 tabBar 配置,你可以在该配置中修改 tabBar 的颜色、背景图、样式和显示的页面等。

1. 基本结构

tabBar 配置位于 pages.json 中的 tabBar 字段下,包含以下属性:

  • color:选项卡文字的颜色。
  • selectedColor:选中时文字的颜色。
  • backgroundColor:底部导航栏的背景颜色。
  • borderStyle:设置导航栏上边框的样式,支持 blackwhite
  • list:底部导航栏的各个 tab 项。
2. 自定义 TabBar 示例

假设我们有三个页面:homediscoverprofile,我们想要自定义 TabBar,使其更符合设计要求,具体代码如下:

pages.json 中的配置:

{
  "pages": [
    {
      "path": "pages/home/home",
      "style": {
        "navigationBarTitleText": "首页"
      }
    },
    {
      "path": "pages/discover/discover",
      "style": {
        "navigationBarTitleText": "发现"
      }
    },
    {
      "path": "pages/profile/profile",
      "style": {
        "navigationBarTitleText": "我的"
      }
    }
  ],
  "tabBar": {
    "color": "#8e8e8e",  // 未选中时字体颜色
    "selectedColor": "#ff6347",  // 选中时字体颜色
    "backgroundColor": "#ffffff",  // 背景颜色
    "borderStyle": "black",  // 上边框颜色
    "list": [
      {
        "pagePath": "pages/home/home",
        "text": "首页",
        "iconPath": "static/tabbar/home.png",  // 图标路径
        "selectedIconPath": "static/tabbar/home_selected.png"  // 选中的图标路径
      },
      {
        "pagePath": "pages/discover/discover",
        "text": "发现",
        "iconPath": "static/tabbar/discover.png",
        "selectedIconPath": "static/tabbar/discover_selected.png"
      },
      {
        "pagePath": "pages/profile/profile",
        "text": "我的",
        "iconPath": "static/tabbar/profile.png",
        "selectedIconPath": "static/tabbar/profile_selected.png"
      }
    ]
  }
}

三、配置自定义 TabBar 图标与样式

1. 准备图标

你可以在 static/tabbar/ 目录下放置相应的图标文件(home.pngdiscover.pngprofile.png)。如果图标需要不同的样式,可以设计两个版本的图标,分别用于选中状态和未选中状态:

  • home.png:未选中状态的图标。
  • home_selected.png:选中状态的图标。
2. 图标与样式说明
  • iconPath:未选中时显示的图标。
  • selectedIconPath:选中时显示的图标。

图标建议大小:每个图标的尺寸建议为 40x40px60x60px,并且图标需要放在 static/tabbar/ 目录下。

四、实现 TabBar 的页面逻辑

1. 首页(home.vue
<template>
  <view>
    <text>首页内容</text>
  </view>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    navigateTo() {
      // 示例方法,点击按钮跳转到其它页面
      uni.navigateTo({
        url: '/pages/discover/discover'
      });
    }
  }
};
</script>

<style scoped>
/* 页面样式 */
</style>
2. 发现页(discover.vue
<template>
  <view>
    <text>发现内容</text>
  </view>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {}
};
</script>

<style scoped>
/* 页面样式 */
</style>
3. 我的页(profile.vue
<template>
  <view>
    <text>我的内容</text>
  </view>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {}
};
</script>

<style scoped>
/* 页面样式 */
</style>

五、运行与测试

在 HBuilderX 中,选择 运行 -> 运行到小程序,选择 微信小程序,并通过微信开发者工具进行调试。

你将看到底部导航栏已经被自定义为你设置的样式,并且可以正常在不同页面之间进行切换。

六、总结

通过 pages.json 配置文件,UniApp 提供了一种便捷的方式来自定义微信小程序的 TabBar。你可以自由设置 tabBar 的颜色、图标以及选中状态,并通过添加自定义页面逻辑来丰富整个应用的功能。本文展示了一个简单的自定义 tabBar 的实现,开发者可以根据自己的需求进一步扩展和定制 TabBar 的功能和样式。

希望通过本文的教程,能够帮助你快速上手并实现符合设计需求的自定义 TabBar。

### 创建 UniApp 微信小程序中的自定义 tabBar #### 配置 `app.json` 在配置文件 `app.json` 中,移除默认的 tabBar 设置以便完全控制底部导航栏的行为和外观[^1]。 ```json { "pages": [ "pages/index/index", "pages/logs/logs" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "black" } } ``` #### 编写自定义 tabBar 组件 创建一个新的 Vue 文件作为自定义 tabBar 组件,在此例子中命名为 `tabbar.vue` 并放置于 `components/tabbar/` 目录下。这个组件负责渲染所有的 tab 按钮并处理点击事件来切换页面[^3]。 ```vue <template> <view class="custom-tab-bar"> <!-- 这里是简化版的模板 --> <button v-for="(item, index) in items" :key="index" @click="switchTab(item.pagePath)"> {{ item.text }} </button> </view> </template> <script> export default { data() { return { items: [ { text: '首页', pagePath: '/pages/index/index' }, { text: '日志', pagePath: '/pages/logs/logs' } ] }; }, methods: { switchTab(path) { uni.switchTab({ url: path }); } } }; </script> <style scoped> .custom-tab-bar { display: flex; justify-content: space-around; padding: 8px 0; background-color: #f7f7f7; } button { border: none; background-color: transparent; font-size: 16px; } </style> ``` #### 注册全局组件 打开项目的入口文件 `main.js` 或者按照框架规定的位置引入编写的 tabBar 组件,并注册为全局可用的标签名 `<tabbar>`。 ```javascript import Vue from 'vue'; import App from './App'; // 导入自定义 tabBar 组件 import tabbar from "./components/tabbar/tabbar.vue"; Vue.config.productionTip = false; // 将其注册成全局组件 Vue.component('tabbar', tabbar); App.mpType = 'app'; const app = new Vue({ ...App }); app.$mount(); ``` #### 使用自定义 tabBar 最后一步是在各个页面中显示自定义tabBar。可以在每个页面对应的 `.vue` 文件内的 `<template>` 标签内加入 `<tabbar></tabbar>` 来实例化该组件[^2]。 ```html <!-- pages/index/index.vue --> <template> <view class="container"> <text>这是首页的内容。</text> <!-- 显示自定义 tabBar --> <tabbar /> </view> </template> ``` 通过上述操作就可以成功地在一个基于 UniApp 构建的微信小程序项目中实现自定义 tabBar 功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只蜗牛儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值