• 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>

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

  • 相关阅读:
    【python量化】Kaggle金融市场价格预测Top方案——基于AutoEncoder与MLP的预测模型...
    2022-09-05 ClickHouse的IN操作符说明
    优思学院和优思教育有关系吗?
    Java中为什么wait和notify方法要在同步块中调用
    SpringBoot的多环境切换(已废除)
    【机器学习】线性分类【下】经典线性分类算法
    [附源码]java毕业设计java航班资源车管理系统
    直播电商首战双十一,B站会就此开启“逆袭之路”?
    装配体的模态分析-SOLIDWORKS 2024新功能
    java计算机毕业设计基于springboot 餐馆点餐订餐外卖系统
  • 原文地址:https://blog.csdn.net/weixin_44786530/article/details/134250720