自定义封装微信小程序tabBar

  • 先创建文件夹

    • 图标:images文件夹下的icon
    • 先删除原来pages文件夹下的页面
    • 在重新在pages文件夹下新建四个页面,分别是:
      • chat:消息
      • doc:文档
      • home:首页
      • profile:我的
    • 新建一个自定义组件来渲染tabBar
      • 根目录下,文件名必须是custom-tab-bar(不能是components)
  • 目录结构:

  • app.json配置("custom": true,为自定义组件的意思。usingComponents使用组件的意思,注册自定义组件。同时其余 tabBar 相关配置也补充完整)

    {"pages":["pages/home/index","pages/doc/index","pages/chat/index","pages/profile/index"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "Weixin","navigationBarTextStyle":"black"},"tabBar": {"color":"#1694DD","selectedColor": "#FA314A","backgroundColor":"#f9f9f910","borderStyle":"black","position": "bottom","custom": true,"list": [{"pagePath":"pages/home/index","text":"首页","iconPath":"/images/icon/home.png","selectedIconPath": "/images/icon/home_selected.png"},{"pagePath":"pages/doc/index","text":"文档","iconPath":"/images/icon/document.png","selectedIconPath": "/images/icon/document_selected.png"},{"pagePath":"pages/chat/index","text":"消息","iconPath":"/images/icon/chat.png","selectedIconPath": "/images/icon/chat_selected.png"},{"pagePath":"pages/profile/index","text":"我的","iconPath":"/images/icon/user.png","selectedIconPath": "/images/icon/user_selected.png"}]},"usingComponents": {"tabbar":"./custom-tab-bar/index"},"style": "v2","sitemapLocation": "sitemap.json"
    }
    
  • custom-tab-bar中的index.wxml里面

    <view class="tab-bar"><block wx:for="{{list}}" wx:key="index"><view class="tab-bar-item" bindtap="switchTop" data-active="{{index}}" data-url="{{item.url}}"><image src="{{active===index?item.select_icon:item.icon}}" class="icon"></image><view> {{item.title}}</view></view></block>
    </view>
    
  • custom-tab-bar中的index.wxss里面

    .tab-bar {display: flex;text-align: center;height: 96rpx;border-top: 1rpx solid rgba(0, 0, 0, 0.3);font-size: 26rpx;padding: 6rpx 0;
    }
    .tab-bar-item {flex: 1;
    }
    .icon {width: 48rpx;height: 48rpx;
    }
    
  • custom-tab-bar中的index.js里面

    // custom-tab-bar/index.js
    Component({/*** 组件的属性列表*/properties: {},/*** 组件的初始数据*/data: {active:0,list: [{title:'首页',url:'/pages/home/index',icon:'../images/icon/home.png',select_icon:'../images/icon/home_selected.png'},{title:'消息',url:'/pages/chat/index',icon:'../images/icon/chat.png',select_icon:'../images/icon/chat_selected.png'},{title:'文档',url:'/pages/doc/index',icon:'../images/icon/document.png',select_icon:'../images/icon/document_selected.png'},{title:'我的',url:'/pages/profile/index',icon:'../images/icon/user.png',select_icon:'../images/icon/user_selected.png'},]},/*** 组件的方法列表*/methods: {switchTop(e) {// console.log(e);const {active,url} = e.currentTarget.datasetthis.setData({active})wx.switchTab({url})}}
    })
    
  • 为了防止跳转bug,需要在每个页面的onshow生命周期中调用getTabBar(),设置被选中的下标

    • pages文件夹里面的home页面中的index.js

        /*** 生命周期函数--监听页面显示*/onShow() {this.getTabBar().setData({active:0})},
      
    • pages文件夹里面的chat页面中的index.js

        /*** 生命周期函数--监听页面显示*/onShow() {this.getTabBar().setData({active:1})},
      
    • pages文件夹里面的doc页面中的index.js

        /*** 生命周期函数--监听页面显示*/onShow() {this.getTabBar().setData({active:2})},
      
    • pages文件夹里面的profile页面中的index.js

        /*** 生命周期函数--监听页面显示*/onShow() {this.getTabBar().setData({active:3})},
      
  • 页面展示效果

自定义微信小程序TabBar相关推荐

  1. 自定义微信小程序tabBar,兼容iPhone异形全面屏

    需求 开发微信商城会员中心,tabBar有首页及用户中心,当用户没有登录时点击页面任意位置均弹出登录窗口.但是自带的微信tabBar无法被弹出的遮罩层覆盖,从而可以在两个tab之间切换. 解决 自己手 ...

  2. 微信自定义tabbar有小红点_自定义微信小程序tabBar组件上边框的颜色

    背景: 在微信小程序的实际开发过程中,有时候我们需要修改微信小程序提供的 tabBar 组件顶部边框的颜色,以满足项目需求 解决方案: 方式一: 通过tabBar组件自带的 borderStyle 属 ...

  3. 自定义微信小程序tabBar组件上边框的颜色

    背景: 在微信小程序的实际开发过程中,有时候我们需要修改微信小程序提供的 tabBar 组件顶部边框的颜色,以满足项目需求 解决方案: 方式一: 通过tabBar组件自带的 borderStyle 属 ...

  4. mpvue自定义微信小程序indicator(指示点)样式

    mpvue自定义微信小程序indicator(指示点)样式 效果图 HTML <template><div class="container"><sw ...

  5. 【微信小程序】微信小程序tabBar使用中不显示问题

    微信小程序中tabBar配置 微信小程序中下方的tabBar如何配置很多刚刚接触小程序的同学,有些懵.这里给你一个详细的配置文档: 小程序配置 | 微信开放文档 具体配置代码如下: "tab ...

  6. 使用taro自定义微信小程序导航栏

    1.在app.config.js中的window配置项的内容替换为:"navigationStyle":"custom" custom表示自定义导航栏,但会保留 ...

  7. 微信小程序tabBar导航栏页和其他页执行onLoad与onShow时机;tabBar页获取不到参数问题;navigateTo跳转无效问题;onShow执行两次问题;

    1.注意点: 只有五种情况会触发导航栏tabBar页的onLoad函数,分别是: –1.1:首次进入到导航栏tabBar页面: –1.2:从微信分享进入的导航栏tabBar页面: –1.3:识别二维码 ...

  8. 微信小程序uni.switchTab传参获取不到;小程序跳转到tabBar页并传参;uni-app微信小程序获取tabBar页面参数失败;uni-app微信小程序tabBar页面onLoad不执行

    需求场景:从非tabBar页面B跳转到tabBar页面A,并想要携带参数. 如果使用uni.switchTab传参,会导致tabBAE页面获取不到参数: 原因: 官方文档有说,uni.switchTa ...

  9. rax自定义微信小程序导航栏

    一.导航栏样式 背景: 接到一个需求,需要自定义微信导航栏,并且展示如上图存在各种样式: 难点: 兼容IOS刘海屏,IOS药丸屏,安卓无框屏.H5正常屏幕.小程序退出后台不随页面滚动: navigat ...

  10. 微信小程序——tabBar使用

    如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面. 其中 list 接受一 ...

最新文章

  1. 这些资源网站为什么能获得5万知乎大佬推荐,而我错失了什么吗?
  2. FPGA基础知识极简教程(5)什么是锁存器以及如何在FPGA开发中避免生成锁存器?
  3. 9-分析事物问题并编写 Utils 文件
  4. android listview万能适配器
  5. .dat文件写入byte类型数组_文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流...
  6. 线程安全的signals
  7. 【Android基础】Fragment 详解之Fragment介绍
  8. matlab基础与实例教程,MATLAB基础与实例教程
  9. Android之library class android.webkit.WebViewClient depends on program class android.net.http.SslErro
  10. Spring休眠教程
  11. 高性能的分布式内存对象缓存系统Memcached
  12. python docx table 边框_使用pythondocx指定表中的边框外观
  13. 各国语言缩写-各国语言简称,世界各国域名缩写
  14. HyperLPR车牌识别技术算法之车牌粗定位与训练
  15. fzoj Problem 2190 非提的救赎 【单调栈】
  16. Oracle常见问题一千问
  17. 怎样使用PS制作木刻效果图片?添加木刻特效原来这么简单!
  18. 关于unity3d插件——easy touch
  19. 7.1创新Audigy2Z S 7.1声卡的设置方法
  20. RD650 raid5 linux,联想RD650服务器Raid5配置图文教程.docx

热门文章

  1. 怎么批量修改pdf文件名
  2. gateface php,XAMPP下载-Xampp(PHP环境套件)V8.01 官方win版-ucbug软件站
  3. 【Uniapp 原生插件】芯烨云打印机插件
  4. CGAL license说明
  5. 报名软件批次分类code不能为空_为什么金蝶入库单保存时提示批号不能为空
  6. 商用密码产品认证-电子签章系统
  7. 2022爱分析・人工智能应用实践报告
  8. 宏电DTU配置教程和配置工具
  9. 空间索引之网格与四叉树
  10. Navicat 添加唯一索引