微信小程序开发之自定义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 相关文章推荐
Prototype使用指南之hash.js
Jan 10 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
javascript 对象数组根据对象object key的值排序
Mar 09 Javascript
hovertree插件实现二级树形菜单(简单实用)
Dec 28 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
JavaScript操作文件_动力节点Java学院整理
Jun 30 Javascript
react router 4.0以上的路由应用详解
Sep 21 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 Javascript
微信小程序中wxs文件的一些妙用分享
Feb 18 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
十天学会php之第四天
2006/10/09 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
php中strtotime函数用法详解
2014/11/15 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
一文读懂Python 枚举
2020/08/25 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
新党章心得体会
2014/09/04 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
雷锋的观后感
2015/06/10 职场文书
高中团支书竞选稿
2015/11/21 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书