当前位置:   article > 正文

【uni-app】tabbar自定义_uniapp自定义tabbar

uniapp自定义tabbar

需求

自带的tabbar是无法做成圆角加阴影的,最后的解决方法只能是自定义tabbar。

实现

第一步:在page.json中定义两个tab的路径。

  1. "tabBar": {
  2. "blurEffect":"extralight",
  3. "color": "#909399",
  4. "selectedColor": "#18b566",
  5. "borderStyle": "black",
  6. "list": [
  7. {
  8. "pagePath": "pages/list/list"
  9. },
  10. {
  11. "pagePath": "pages/my/my"
  12. }
  13. ]
  14. },

第二步:在components中自定义一个tabbar的组件

  1. <template>
  2. <view class="tabbar" >
  3. <view class="tabbar-item" v-for="(item,index) in list" :key="index" @click="changeTab(index)">
  4. <image class="img" :src="item.selectedIconPath" v-if="current == index"></image>
  5. <image class="img" :src="item.iconPath" v-else></image>
  6. <view class="text active" v-if="current == index">{{item.text}}</view>
  7. <view class="text" v-else>{{item.text}}</view>
  8. </view>
  9. </view>
  10. </template>
  11. <script>
  12. export default {
  13. name: "tabbar",
  14. props: {
  15. current: Number
  16. },
  17. created() {
  18. uni.hideTabBar()
  19. },
  20. data() {
  21. return {
  22. list: [
  23. {
  24. selectedIconPath: "../../static/tabbar/list-active.png",
  25. iconPath: "../../static/tabbar/list.png",
  26. text: '列表',
  27. pagePath: "pages/list/list"
  28. },
  29. {
  30. selectedIconPath: "../../static/tabbar/my-active.png",
  31. iconPath: "../../static/tabbar/my.png",
  32. text: '我的',
  33. pagePath: "pages/my/my"
  34. }
  35. ],
  36. }
  37. },
  38. methods: {
  39. changeTab(e) {
  40. uni.switchTab({
  41. url: '/' + this.list[e].pagePath,
  42. })
  43. }
  44. }
  45. }
  46. </script>
  47. <style scoped>
  48. .tabbar {
  49. position: fixed;
  50. left: 0;
  51. bottom: 0;
  52. z-index: 99;
  53. width: 100%;
  54. height: 150upx;
  55. display: flex;
  56. align-items: center;
  57. justify-content: space-around;
  58. background-image:url(../../static/tabbar/bg.png);
  59. background-repeat: no-repeat;
  60. background-size: 100% 100%;
  61. padding: 30rpx 0 0;
  62. },
  63. .tabbar-item {
  64. padding: 0 40rpx;
  65. }
  66. .img {
  67. height: 42upx;
  68. width: 42upx;
  69. }
  70. .text {
  71. font-size: 23upx;
  72. font-family: PingFang SC-Regular, PingFang SC;
  73. font-weight: 400;
  74. color: #CACACA;
  75. line-height: 27upx;
  76. }
  77. .text.active {
  78. color: #409EFE;
  79. }
  80. </style>

第三步:使用tabbar。

  1. <!-- list页面 -->
  2. <tabbar current="0"></tabbar>
  3. <!-- my页面 -->
  4. <tabbar current="1"></tabbar>
  5. <script>
  6. import tabbar from '@/components/tabbar/index'
  7. components:{
  8. tabbar
  9. }
  10. </script>

解析

进入页面就隐藏tabbar

  1. created() {
  2. uni.hideTabBar()
  3. },

tabbar遮住正常页面,层级又不能高于遮罩层,设置层级99。

  1. .tabbar {
  2. position: fixed;
  3. left: 0;
  4. bottom: 0;
  5. z-index: 99;
  6. }

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

闽ICP备14008679号