当前位置:   article > 正文

uniapp 中自定义的tabbbar导航栏_uniapp 自定义tabbar

uniapp 自定义tabbar

1.前言

        在uniapp中我们需要自定义tabbar,而不去使用pages.json内的tabbar配置项。

2.版本

        uniapp vue3版本

3.过程

3.1.修改pages.json

        找到pages.json文件,删除pathPath以外的属性。

  1. "tabBar": {
  2. "list": [{
  3. "pagePath": "pages/home/home"
  4. },
  5. {
  6. "pagePath": "pages/my/my"
  7. }
  8. ]
  9. },

3.2.隐藏原生tabbar并添加全局变量tabbarIndex

  1. <script setup>
  2. import { onLaunch, } from "@dcloudio/uni-app";
  3. getApp().globalData = {
  4. tabbarIndex: 0,
  5. };
  6. onLaunch(() => {
  7. uni.hideTabBar();
  8. });
  9. </script>

3.3.创建tabbar组件

  1. <template>
  2. <view class="tabBarRow">
  3. <view
  4. v-for="(item, index) in list"
  5. :key="index"
  6. :class="['tabBarItem', index == tabbarIndex ? 'selctedIcon' : 'icon']"
  7. @click="changeTabBar(index)"
  8. >
  9. <image :src="index == tabbarIndex ? item.selectedIcon : item.icon"></image>
  10. </view>
  11. </view>
  12. </template>
  13. <script setup lang="ts">
  14. import { reactive, ref } from "vue";
  15. const tabbarIndex = ref(getApp().globalData.tabbarIndex);//获取全局变量tabbarIndex
  16. const list = reactive([
  17. {
  18. label: "首页",
  19. path: "/pages/home/home",
  20. icon: "/static/tabbar/home_icon.png",
  21. selectedIcon: "/static/tabbar/home_icon_selected.png",
  22. },
  23. {
  24. label: "我的",
  25. path: "/pages/my/my",
  26. icon: "/static/tabbar/my_icon.png",
  27. selectedIcon: "/static/tabbar/my_icon_selected.png",
  28. },
  29. ]);
  30. function changeTabBar(index) {
  31. console.log("changeTabBar", index);
  32. getApp().globalData.tabbarIndex = index; //切换菜单时修改全局变量tabbarIndex
  33. uni.switchTab({
  34. url: list[index].path,
  35. });
  36. }
  37. </script>
  38. <style scoped>
  39. .tabBarRow {
  40. flex-direction: row;
  41. display: grid;
  42. grid-template-columns: 1fr 1fr 1fr 1fr;
  43. align-items: center;
  44. justify-items: center;
  45. width: 100%;
  46. height: 124rpx;
  47. background-color: white;
  48. position: fixed;
  49. bottom: 0;
  50. z-index: 999;
  51. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
  52. /* padding-bottom: 40rpx */
  53. }
  54. .tabBarItem {
  55. height: 100rpx;
  56. width: 100rpx;
  57. position: relative;
  58. top: -24rpx;
  59. }
  60. .selctedIcon {
  61. height: 146rpx;
  62. width: 146rpx;
  63. }
  64. .icon {
  65. height: 96rpx;
  66. width: 96rpx;
  67. }
  68. .tabBarItem image {
  69. height: 100%;
  70. width: 100%;
  71. }
  72. </style>

3.4.在所有菜单中引入tabbar组件

  1. <template>
  2. <tabbar></tabbar>
  3. </template>
  4. <script setup lang="ts">
  5. import tabbar from "@/components/tabbar/tabbar.vue";
  6. </script>

4.结尾

这样就完成了uniapp的自定义tabbar组件了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/445752
推荐阅读
相关标签
  

闽ICP备14008679号