微信小程序开发之自定义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 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
jquery和css3实现的炫酷时尚的菜单导航
Sep 01 Javascript
jQuery插件实现适用于移动端的地址选择器
Feb 18 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 Javascript
前端分页功能的实现以及原理(jQuery)
Jan 22 Javascript
Move.js入门
Feb 08 Javascript
js实现简单的选项卡效果
Feb 23 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 Javascript
js实现圆形菜单选择器
Dec 03 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中的日期处理方法集锦
2007/01/02 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
微信API接口大全
2015/04/15 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
在视频前插入广告
2006/11/20 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python的函数的一些高阶特性
2015/04/27 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python过滤列表用法实例分析
2016/04/29 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
python 有效的括号的实现代码示例
2019/11/11 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
详解Python中import机制
2020/09/11 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
外贸学院会计专业应届生求职信
2013/11/14 职场文书
营销经理工作检讨书
2014/11/03 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
Redis分布式锁Redlock的实现
2021/08/07 Redis
关于python中模块和重载的问题
2021/11/02 Python