微信小程序开发之自定义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 相关文章推荐
javascript比较文档位置
Apr 08 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 Javascript
原生JavaScript制作计算器
Oct 16 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
Bootstrap Table 删除和批量删除
Sep 22 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
vue-cli 使用axios的操作方法及整合axios的多种方法
Sep 12 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 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
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
Python中with及contextlib的用法详解
2017/06/08 Python
python中requests库session对象的妙用详解
2017/10/30 Python
python 正确保留多位小数的实例
2018/07/16 Python
浅谈django orm 优化
2018/08/18 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
打架检讨书800字
2014/01/10 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS