• uniapp对tabbar封装,简单好用


    第一种,效果展示

    上代码,新建一个公用组件,tabbar.vue

    1. <template>
    2. <view class="tabbar">
    3. <view class="tabbar-item" @click="tabbarbtn(0)">
    4. <image class="item-image" v-if="value==0" src="@/static/icon1.png" image>
    5. <image class="item-image" v-else src="@/static/icon5.png" ></image>
    6. <text :class="['item-text',value==0?'active':'']">微信</text>
    7. </view>
    8. <view class="tabbar-item" @click="tabbarbtn(1)">
    9. <image class="item-image" v-if="value==1" src="@/static/icon2.png" mode=""></image>
    10. <image class="item-image" v-else src="@/static/icon6.png" mode=""></image>
    11. <text :class="['item-text',value==1?'active':'']">通讯录</text>
    12. </view>
    13. <!-- 购物车没有数量情况 -->
    14. <!-- <view class="tabbar-item" @click="tabbarbtn(2)">
    15. <image class="item-image" v-if="value==2" src="@/static/icon3.png" mode=""></image>
    16. <image class="item-image" v-else src="@/static/icon7.png" mode=""></image>
    17. <text :class="['item-text',value==2?'active':'']">发现</text>
    18. </view> -->
    19. <!-- 购物车有数量情况 -->
    20. <view class="tabbar-item" @click="tabbarbtn(2)">
    21. <view class="item-view">
    22. <image class="item-image" v-if="value==2" src="@/static/icon3.png" mode=""></image>
    23. <image class="item-image" v-else src="@/static/icon7.png" mode=""></image>
    24. <view class="item-num">
    25. {{num}}
    26. </view>
    27. </view>
    28. <text :class="['item-text',value==2?'active':'']">发现</text>
    29. </view>
    30. <view class="tabbar-item" @click="tabbarbtn(3)">
    31. <image class="item-image" v-if="value==3" src="@/static/icon4.png" mode=""></image>
    32. <image class="item-image" v-else src="@/static/icon8.png" mode=""></image>
    33. <text :class="['item-text',value==3?'active':'']">我的</text>
    34. </view>
    35. </view>
    36. </template>
    37. <script>
    38. export default {
    39. name: "tabbar",
    40. data() {
    41. return {
    42. num:2,
    43. value:this.vlue,
    44. list: [{
    45. path: "pages/index/home"
    46. },
    47. {
    48. path: "pages/index/login"
    49. },
    50. {
    51. path: "pages/index/cartpage"
    52. },
    53. {
    54. path: "pages/index/personage"
    55. },
    56. ],
    57. };
    58. },
    59. props:{
    60. vlue:{
    61. type: Number,
    62. }
    63. },
    64. methods:{
    65. tabbarbtn(index){
    66. uni.switchTab({
    67. url: '/' + this.list[index].path,
    68. })
    69. }
    70. }
    71. }
    72. </script>
    73. <style lang="scss" scoped>
    74. .tabbar {
    75. position: fixed;
    76. left: 0;
    77. bottom: 0;
    78. width: 100%;
    79. // 苹果手机下边有小黑条的安全距离
    80. padding-bottom: env(safe-area-inset-bottom);
    81. background-color: #fff;
    82. box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0,0,0,0.1);
    83. display: flex;
    84. align-items: center;
    85. .tabbar-item {
    86. padding:35rpx 0 15rpx;
    87. flex: 1;
    88. display: flex;
    89. flex-direction: column;
    90. justify-content: center;
    91. align-items: center;
    92. .item-view{
    93. position: relative;
    94. .item-num{
    95. position: absolute;
    96. right:-85%;
    97. top:-40%;
    98. font-size:20rpx;
    99. color: #fff;
    100. border-radius: 20rpx;
    101. padding: 5rpx 15rpx;
    102. background-color: red;
    103. }
    104. }
    105. .item-image{
    106. display: block;
    107. width: 50rpx;
    108. height: 50rpx;
    109. }
    110. .item-text{
    111. margin-top: 4rpx;
    112. font-size: 24rpx;
    113. color: #666666;
    114. }
    115. .active{
    116. color: #d81e06;
    117. }
    118. }
    119. }
    120. </style>

    在pages.json中要tabbar里的页面路径

    使用方式,在其他tabbar页面,引入此文件使用即可。

  • 相关阅读:
    加拿大海运渠道操作流程及注意事项
    GTA5需要什么配置?
    41.cuBLAS开发指南中文版--cuBLAS中的Level-2gemvBatched()
    k8s集群安装网络插件calico常见问题
    Docker这么强,谁用都说好
    杰理之增加自动mute处理节点【篇】
    才智杂志才智杂志社才智编辑部2022年第35期目录
    73.矩阵置零
    Mybase使用教程-不古出品
    深入理解Vite3.0
  • 原文地址:https://blog.csdn.net/maliao5/article/details/141930991