当前位置:   article > 正文

uniapp使用vue3和ts开发小程序自定义tab栏,实现自定义凸出tabbar效果_vue3小程序自定义底部凸起导航栏

vue3小程序自定义底部凸起导航栏

要实现自定义的tabbar效果,可以使用自定义tab覆盖主tab来实现,当程序启动或者从后台显示在前台时隐藏自带的tab来实现。自定义一个tab组件,然后在里面实现自定义的逻辑。

组件中所使用的组件api可以看:Tabbar 底部导航栏 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架

先在components/tabbar/里面实现组件逻辑:

  1. <template>
  2. <u-tabbar :value="tabIndex" @change="change" :fixed="true" :placeholder="true" :safeAreaInsetBottom="true">
  3. <u-tabbar-item text="首页" icon="home"></u-tabbar-item>
  4. <view class="tabars" @click="tabMiddle">
  5. <view class="item">
  6. <image class="img" src="../../static/images/gongshang.png" mode="widthFix"></image>
  7. </view>
  8. </view>
  9. <u-tabbar-item text="我的" icon="account"></u-tabbar-item>
  10. </u-tabbar>
  11. </template>
  12. <script setup lang="ts">
  13. import { ref } from 'vue';
  14. const tabIndex = ref(0);
  15. const change = function (index) {
  16. tabIndex.value = index
  17. console.log("调用父组件的tab切换", index);
  18. if (index == 0) {
  19. uni.switchTab({
  20. url: '/pages/home/index'
  21. })
  22. } else if (index == 1) {
  23. uni.switchTab({
  24. url: '/pages/my/index'
  25. })
  26. }
  27. };
  28. // 点击中间凸出来的tab
  29. const tabMiddle = function () {
  30. console.log("点击中间的tab");
  31. }
  32. </script>
  33. <style lang="scss">
  34. .tabars {
  35. width: 90rpx;
  36. height: 70rpx;
  37. display: flex;
  38. flex-direction: column;
  39. align-content: center;
  40. position: relative;
  41. bottom: 50rpx;
  42. border-radius: 50%;
  43. background-color: #fff;
  44. border-top: 2px solid #dadbde;
  45. padding: 30rpx;
  46. .item {
  47. width: 100%;
  48. height: 100%;
  49. display: flex;
  50. justify-content: center;
  51. .img {
  52. width: 80%;
  53. }
  54. }
  55. }
  56. </style>

组件里面实现tab切换的api里面使用规范:uni.navigateTo(OBJECT) | uni-app官网

注意看使用switchTab的时候,url的前面要有/,然而pages.json里面的是不需要的。

然后还需要在相应的主页面中引入这个组件:

并且修改一下App.vue文件内容,在启动和显示的时候,隐藏自带的tabbar:

  1. <script setup lang="ts">
  2. import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
  3. onLaunch(() => {
  4. console.log("App Launch");
  5. uni.hideTabBar()
  6. });
  7. onShow(() => {
  8. console.log("App Show");
  9. uni.hideTabBar()
  10. });
  11. onHide(() => {
  12. console.log("App Hide");
  13. });
  14. </script>
  15. <style lang="scss">
  16. @import "uview-plus/index.scss";
  17. </style>

然后重新打开即可看到效果:

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

闽ICP备14008679号