当前位置:   article > 正文

uniapp开发微信小程序自定义tabbar_uniapp tabbar

uniapp tabbar

第一步:在pages.json里定义自己tabbar路径,定义的时候只需要写上页面路径即可

 第二步:自定义tabbar页面,为了实现点击动作的动态效果,需要用到watch监听父组件传来的值的改变

 自定义tabbar页面全部代码

  1. <template>
  2. <view class="tab_bar">
  3. <view class="tabbarBox">
  4. <view class="handleBox" v-for="(item,index) in tabBarList" :key="index">
  5. <view class="menuBox" @click="goPages(item.pageIndex.index)">
  6. <view class="menuIcon">
  7. <image v-if="item.pageIndex.index!=selectIndex" class="img" :src="item.iconPath"></image>
  8. <image v-else class="img" :src="item.selectIconPath"></image>
  9. </view>
  10. <view class="menuName">
  11. <text :class="item.pageIndex.index==selectIndex?'TextColor':'Text'" >{{item.tabbarName}}</text>
  12. </view>
  13. </view>
  14. </view>
  15. </view>
  16. </view>
  17. </template>
  18. <script>
  19. export default {
  20. props: {
  21. page: {
  22. type: String,
  23. default: "homeIndex"
  24. }
  25. },
  26. watch: {
  27. page: {
  28. handler(value) {
  29. this.selectIndex = value;
  30. },
  31. immediate: true,
  32. deep: true
  33. }
  34. },
  35. data() {
  36. return {
  37. selectIndex: "",
  38. tabBarList: "",
  39. }
  40. },
  41. //uniapp子组件不支持应用生命周期,所以只能用vue生命周期
  42. created() {
  43. //tabbar数据,这儿也支持后台定义通过接口获取数据
  44. this.tabBarList = [{
  45. "tabbarName":"", //tababr名称
  46. "iconPath":"", //tabbar icon
  47. "selectIconPath":"", //tabbar 选择icon
  48. "pageIndex":"" //页面路径
  49. }]
  50. },methods: {
  51. //进入tabble页
  52. goPages(pageIndex) {
  53. uni.switchTab({
  54. url:pageIndex
  55. })
  56. },
  57. },
  58. }
  59. </script>
  60. <style lang="scss">
  61. .tab_bar {
  62. width: 100vw;
  63. height: 120rpx;
  64. position: fixed;
  65. bottom: 30rpx;
  66. /* 模糊大小就是靠的blur这个函数中的数值大小 */
  67. backdrop-filter: blur(10px);
  68. border-radius: 60rpx;
  69. .tabbarBox {
  70. display: flex;
  71. margin-top: 10rpx;
  72. justify-content: space-evenly;
  73. .handleBox {
  74. width: 20vw;
  75. height: 110rpx;
  76. .menuBox {
  77. padding: 0rpx 20rpx;
  78. width: 120rpx;
  79. height: 98%;
  80. text-align: center;
  81. .img {
  82. width: 50rpx;
  83. height: 50rpx;
  84. }
  85. }
  86. }
  87. }
  88. }
  89. .Text {
  90. font-size: 24rpx;
  91. font-family: Cochin, serif;
  92. font-weight: 900;
  93. }
  94. .TextColor {
  95. @extend .Text;
  96. color: #d81e06;
  97. }
  98. </style>

注:该页面可以直接用组件的方式来放,因为uniapp支持easycom模式,这样比较简单,不用全局注册

 第三步:隐藏原生tabbar,在App.vue 文件里面onshow写上 uni.hideTabbar();也可直接在pages.json中通过tabbar内custom配置项关闭默认tabbar

方式一:

方式二:

第四步:引入table页面,如果是使用了easycom规则的组件,可以直接在页面使用

 这儿父组件页面要动态传值,就是为了告诉组件现在的停留页面,也是为了组件动态显示提供基础条件

注意:这个传值必须是动态传值,所以要放在onshow里面,当页面切换的时候就改变值

 当所有页面都引入组件后就可以查看效果了

效果图:

tabbar用的磨砂背景,看着感觉还不错

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