• uniapp使用vue3和ts开发小程序自定义tab栏,实现自定义凸出tabbar效果


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

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

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

    1. <script setup lang="ts">
    2. import { ref } from 'vue';
    3. const tabIndex = ref(0);
    4. const change = function (index) {
    5. tabIndex.value = index
    6. console.log("调用父组件的tab切换", index);
    7. if (index == 0) {
    8. uni.switchTab({
    9. url: '/pages/home/index'
    10. })
    11. } else if (index == 1) {
    12. uni.switchTab({
    13. url: '/pages/my/index'
    14. })
    15. }
    16. };
    17. // 点击中间凸出来的tab
    18. const tabMiddle = function () {
    19. console.log("点击中间的tab");
    20. }
    21. script>
    22. <style lang="scss">
    23. .tabars {
    24. width: 90rpx;
    25. height: 70rpx;
    26. display: flex;
    27. flex-direction: column;
    28. align-content: center;
    29. position: relative;
    30. bottom: 50rpx;
    31. border-radius: 50%;
    32. background-color: #fff;
    33. border-top: 2px solid #dadbde;
    34. padding: 30rpx;
    35. .item {
    36. width: 100%;
    37. height: 100%;
    38. display: flex;
    39. justify-content: center;
    40. .img {
    41. width: 80%;
    42. }
    43. }
    44. }
    45. style>

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

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

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

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

    1. <style lang="scss">
    2. @import "uview-plus/index.scss";
    3. style>

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

  • 相关阅读:
    Spring Cloud alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3)
    电脑怎么截图,4种简单常用的截图方法
    redis的windows系统的安装教程
    Altium Designer学习笔记7
    【数据结构】二叉搜索树
    达芬奇DaVinci Resolve Studio 18.6.3 for Mac
    基于SSM的农业信息管理系统的设计与实现(有报告)。Javaee项目。ssm项目。
    C# .Net中鼠标Cursor的公用辅助类
    关于MicroPython mpremote工具 的一些用例,闲聊
    APS排程软件帮机械加工企业解决交期承诺问题
  • 原文地址:https://blog.csdn.net/weixin_44786530/article/details/134250720