当前位置:   article > 正文

详细介绍uniapp小程序自定义底部tabbar样式的方法_uniapp自定义底部tabbar

uniapp自定义底部tabbar

uniapp自带的tabbar组件可以方便地实现底部导航栏的功能,原生tabBar是相对固定的配置方式,但是默认的样式可能无法满足我们的需求,所以我们需要自定义设置tabbar样式。下面我会详细介绍uniapp自定义tabbar样式的方法。

一、pages.json代码

pages.json这里只配置页面路径就可以。

  1. "tabBar": {
  2. "color": "#7A7E83",
  3. "selectedColor": "#086d5b",
  4. "backgroundColor": "#ffffff",
  5. "list": [
  6. {
  7. "pagePath": "pages/xxx/xxx"
  8. },
  9. {
  10. "pagePath": "pages/xxx/xxx"
  11. },
  12. {
  13. "pagePath": "pages/xxx/xxx"
  14. }
  15. ]
  16. },

二、创建一个tabBar.vue组件

uniapp项目的components目录下创建一个名为tabbar的组件,该组件包含了tabbar的整体布局和动态切换效果。

tabbar.vue组件HTML部分代码如下:

  1. <template>
  2. <view class="tabbar" >
  3. <view class="tabbar-item" v-for="(item,index) in list" :key="index"
  4. @click="changeTab(index)">
  5. <view class="select" v-if="current == index">
  6. <view class="i-t position">
  7. <image class="img imgactive" mode="widthFix"
  8. :src="item.selectedIconPath" v-if="current == index"></image>
  9. <image class="img" mode="widthFix" :src="item.iconPath" v-else></image>
  10. <view class="text active" v-if="current == index">{{item.text}}</view>
  11. <view class="text" v-else>{{item.text}}</view>
  12. </view>
  13. </view>
  14. <view v-else>
  15. <image class="img" mode="widthFix" :src="item.selectedIconPath"
  16. v-if="current == index"></image>
  17. <image class="img" mode="widthFix" :src="item.iconPath" v-else></image>
  18. <view class="text active" v-if="current == index">{{item.text}}</view>
  19. <view class="text" v-else>{{item.text}}</view>
  20. </view>
  21. </view>
  22. </view>
  23. </template>

tabbar.vue组件JS部分代码如下:

  1. <script>
  2. export default {
  3. name:"tabbar",
  4. props: ['current'],
  5. data() {
  6. return {
  7. list: [
  8. {
  9. pagePath: "页面路径",
  10. iconPath: "图标路径",
  11. selectedIconPath: "选中的图标路径",
  12. text: "文字"
  13. },
  14. {
  15. pagePath: "页面路径",
  16. iconPath: "图标路径",
  17. selectedIconPath: "选中的图标路径",
  18. text: "文字"
  19. },
  20. {
  21. pagePath: "页面路径",
  22. iconPath: "图标路径",
  23. selectedIconPath: "选中的图标路径",
  24. text: "文字"
  25. }
  26. ]
  27. }
  28. },
  29. created() {
  30. uni.hideTabBar()
  31. },
  32. methods: {
  33. changeTab(e) {
  34. uni.switchTab({
  35. url: '/' + this.list[e].pagePath,
  36. })
  37. }
  38. }
  39. }
  40. </script>

tabbar.vue组件CSS部分代码如下:

  1. <style>
  2. .tabbar {
  3. font-size: 1.5vh;
  4. position: fixed;
  5. left: 0;
  6. bottom: 0;
  7. z-index: 99;
  8. width: 100%;
  9. height: 6vh;
  10. display: flex;
  11. align-items: center;
  12. justify-content: space-around;
  13. background-color: #fff;
  14. padding: 20rpx 0;
  15. },
  16. .tabbar-item {
  17. height: 100%;
  18. padding: 0 40rpx;
  19. display: flex;
  20. align-items: center;
  21. justify-content: center;
  22. }
  23. .img {
  24. height: 3vh;
  25. width: 2.5vh;
  26. margin: 0 4vw;
  27. }
  28. .text {
  29. text-align: center;
  30. color: #CACACA;
  31. }
  32. .i-t{
  33. font-size: 1.5vh;
  34. padding:2vw 2vh;
  35. position: absolute;
  36. bottom: 1vh;
  37. }
  38. .select{
  39. width: 10vh;
  40. height:10vh;
  41. border-radius: 10vh;
  42. background-color: #086d5b;
  43. margin-bottom: 4vh;
  44. position: relative;
  45. }
  46. .imgactive{
  47. height: 3.5vh;
  48. width: 3.2vh;
  49. margin: 0 2.2vw;
  50. }
  51. .text.active {
  52. color: #fff;
  53. }
  54. </style>

css部分样式可以根据项目需要自行修改

三、在需要显示tabbar的页面中引入tabbar组件

  1. <template>
  2. <view>
  3. <tabbar current="0"></tabbar>
  4. </view>
  5. </template>
  6. <script>
  7. import tabbar from '@/components/tabbar/tabbar.vue'
  8. export default {
  9. components:{
  10. tabbar
  11. }
  12. }
  13. </script>

以上就是uniapp小程序自定义底部tabbar样式的方法的详细内容啦·~

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