当前位置:   article > 正文

uniapp小程序使用自定义tabbar_uniapp小程序自定义tabbar

uniapp小程序自定义tabbar

 创建uni项目什么的就不说啦,这里直接进入正题~

1.新建一个与 pages同级的文件夹目录 components ,用来放置我们的tabbar文件:

2.编写自定义tabbar.vue

  1. <template>
  2. <view class="tabbar-container">
  3. <block style="margin-top: 200rpx;">
  4. <view class="tabbar-item" v-for="(item, index) in tabbarList"
  5. :class="[item.centerItem ? ' center-item' : '']" @click="changeItem(item)">
  6. <view>
  7. <view class="item-top">
  8. <image :src="currentItem == item.id ? item.selectIcon : item.icon"></image>
  9. </view>
  10. </view>
  11. <view class="item-bottom" :class="[currentItem == item.id ? 'item-active' : '']">
  12. <text>{{ item.text }}</text>
  13. </view>
  14. </view>
  15. </block>
  16. </view>
  17. </template>
  18. <script>
  19. export default {
  20. props: {
  21. currentPage: {
  22. type: Number,
  23. default: 0
  24. }
  25. },
  26. data() {
  27. return {
  28. currentItem: 0,
  29. tabbarList: [{
  30. id: 0,
  31. path: '/pages/index/index',
  32. icon: '../../static/iconsvg/home-no.svg',
  33. selectIcon: "../../static/iconsvg/home.svg",
  34. text: '首页',
  35. centerItem: false
  36. },
  37. {
  38. id: 1,
  39. path: '/pages/order/order',
  40. icon: '../../static/iconsvg/dating-no.svg',
  41. selectIcon: '../../static/iconsvg/dating.svg',
  42. text: '服务大厅',
  43. centerItem: false
  44. },
  45. {
  46. id: 2,
  47. path: '/pages/upGoodInfo/upGoodInfo',
  48. icon: '../../static/iconsvg/fabu.svg',
  49. selectIcon: '../../static/iconsvg/fabu.svg',
  50. text: '发布',
  51. centerItem: true
  52. },
  53. {
  54. id: 3,
  55. path: '/pages/connection/connection',
  56. icon: '../../static/iconsvg/txl-no.svg',
  57. selectIcon: '../../static/iconsvg/txl.svg',
  58. text: '通讯录',
  59. centerItem: false
  60. },
  61. {
  62. id: 4,
  63. path: '/pages/person/person',
  64. icon: '../../static/iconsvg/my-no.svg',
  65. selectIcon: '../../static/iconsvg/my.svg',
  66. text: '我的',
  67. centerItem: false
  68. }
  69. ]
  70. };
  71. },
  72. mounted() {
  73. this.currentItem = this.currentPage;
  74. uni.hideTabBar();
  75. },
  76. methods: {
  77. changeItem(item) {
  78. let _this = this;
  79. console.log(item.path)
  80. if (item.id == 2) {
  81. uni.reLaunch({
  82. url: item.path
  83. })
  84. }
  85. uni.reLaunch({
  86. url: item.path
  87. });
  88. }
  89. }
  90. };
  91. </script>
  92. <style scoped>
  93. view {
  94. padding: 0;
  95. margin: 0;
  96. box-sizing: border-box;
  97. background-color: #fff;
  98. }
  99. .tabbar-container {
  100. position: fixed;
  101. bottom: 0;
  102. left: 0;
  103. width: 100%;
  104. height: 146rpx;
  105. box-shadow: 0 0 5px #999;
  106. display: flex;
  107. align-items: flex-start;
  108. padding: 5rpx 0;
  109. color: #999999;
  110. }
  111. .tabbar-container .tabbar-item {
  112. width: 20%;
  113. height: 100rpx;
  114. display: flex;
  115. flex-direction: column;
  116. justify-content: center;
  117. align-items: center;
  118. text-align: center;
  119. }
  120. .tabbar-container .item-active {
  121. color: #22b9ff;
  122. }
  123. .tabbar-container .center-item {
  124. display: block;
  125. position: relative;
  126. }
  127. .tabbar-container .tabbar-item .item-top {
  128. width: 70rpx;
  129. height: 70rpx;
  130. padding: 10rpx;
  131. }
  132. .tabbar-container .center-item .item-top {
  133. flex-shrink: 0;
  134. width: 100rpx;
  135. height: 100rpx;
  136. position: absolute;
  137. top: -50rpx;
  138. left: calc(50% - 50rpx);
  139. border-radius: 50%;
  140. box-shadow: 0 0 5px #999;
  141. }
  142. .tabbar-container .tabbar-item .item-top image {
  143. width: 100%;
  144. height: 100%;
  145. }
  146. .tabbar-container .tabbar-item .item-bottom {
  147. font-size: 28rpx;
  148. width: 100%;
  149. }
  150. .tabbar-container .center-item .item-bottom {
  151. position: absolute;
  152. bottom: 5rpx;
  153. }
  154. </style>

注意 :icon 和 selectIcon 的图标地址不要引用错哦

3.找到我们的入口文件 main.js ,引用写好的tabbar

  1. import tabbar from "components/tabbar/tabbar.vue"
  2. Vue.component('tabbar',tabbar)

注意 : 要写在 import Vue from 'vue' 之后哦

4.在每个tabbar页面的 template 的最后一行加上tabbar组件

注意 : 这里的tabbar组件名需和在 main.js 中注册的一样

:current-page 指的是当前页面的id索引值,比如,如果是首页的话,:current-page="0" 

这样,我们的自定义tabbar就设置完成啦!

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

闽ICP备14008679号