微信小程序开发之自定义tabBar的实现


Posted in Javascript onSeptember 06, 2018

最近开发微信小程序,公司要求做一个类似闲鱼的tabbar,但是网上大多资料的tabbar都会在页面切换的时候重新渲染,所以我写了一个不会重新渲染的tabbar,有需要的直接拿走不谢。https://github.com/SuRuiGit/wxapp-customTabbar

在小程序的开发文档中,对tabbar是这样说明的:

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

Tip:

1.当设置 position 为 top 时,将不会显示 icon

2.tabBar 中的 list 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。

在实际开发过程中,小程序自带的tabbar样式并不能满足设计提供的开发需求,所以需要我们自定义一套属于自己的tabbar。

使用步骤如下:

第一步:找到项目中的tabbarComponent目录,拷贝到你的工程中,然后将tabbarComponent->icon图标替换成你自己的tabbar图片

第二步:到app.json中配置tabBar,这里我就不细说了,只强调闲鱼的tabbar中间的按钮是跳到二级页面,所以不配置在tabBar的list中

第三步:在app.js的onLaunch方法中调用wx.hideTabBar();隐藏系统自带的tabBar

第四步:在app.js中的globalData中加入自定义tabbar的参数,再加入一个方法给tabBar.list配置中的页面使用,代码如下

globalData: {
  userInfo: null,
  tabBar: {
   "backgroundColor": "#ffffff",
   "color": "#979795",
   "selectedColor": "#1c1c1b",
   "list": [
    {
     "pagePath": "/page/index/index",
     "iconPath": "icon/icon_home.png",
     "selectedIconPath": "icon/icon_home_HL.png",
     "text": "首页"
    },
    {
     "pagePath": "/page/myRelease/index",
     "iconPath": "icon/icon_release.png",
     "isSpecial": true,
     "text": "发布"
    },
    {
     "pagePath": "/page/mine/index",
     "iconPath": "icon/icon_mine.png",
     "selectedIconPath": "icon/icon_mine_HL.png",
     "text": "我的"
    }
   ]
  }
 }
editTabbar: function() {
  let tabbar = this.globalData.tabBar;
  let currentPages = getCurrentPages();
  let _this = currentPages[currentPages.length - 1];
  let pagePath = _this.route;
  (pagePath.indexOf('/') != 0) && (pagePath = '/' + pagePath);
  for (let i in tabbar.list) {
   tabbar.list[i].selected = false;
   (tabbar.list[i].pagePath == pagePath) && (tabbar.list[i].selected = true);
  }
  _this.setData({
   tabbar: tabbar
  });
 },

第五步:在tabBar的list中配置的页面的.js文件的data中加入tabbar:{},并在onload方法中调用app.editTabbar();

第六步:在tabBar的list中配置的页面的.json文件中加入

"usingComponents": {

"tabbar": "../../tabbarComponent/tabbar"

}

在.wxml文件中加入<tabbar tabbar="{{tabbar}}"></tabbar>

到目前为止,自定义tabbar就完成啦,撒花!!!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
精通JavaScript 纠正 cleanWhitespace函数
Mar 11 Javascript
Javascript调用C#代码
Jan 17 Javascript
js数组常见操作及数组与字符串相互转化实例详解
Nov 10 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 Javascript
vue中appear的用法
Aug 17 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
react实现换肤功能的示例代码
Aug 14 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
Nov 04 Javascript
Vue的watch和computed方法的使用及区别介绍
Sep 06 #Javascript
Vue-component全局注册实例
Sep 06 #Javascript
Vue 监听列表item渲染事件方法
Sep 06 #Javascript
在Vue组件中获取全局的点击事件方法
Sep 06 #Javascript
jQuery实现基本动画效果的方法详解
Sep 06 #jQuery
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 #Javascript
Vue中使用clipboard实现复制功能
Sep 05 #Javascript
You might like
关于php fread()使用技巧
2010/01/22 PHP
destoon各类调用汇总
2014/06/20 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python中的with...as用法介绍
2015/05/28 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
基于Python的关键字监控及告警
2017/07/06 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Django model select的多种用法详解
2019/07/16 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
Django中的AutoField字段使用
2020/05/18 Python
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
工程业务员工作职责
2013/12/07 职场文书