微信小程序开发之自定义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全排列的六种算法 具体实现
Jun 29 Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 Javascript
node.js使用require()函数加载模块
Nov 26 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 Javascript
简单的JS轮播图代码
Jul 18 Javascript
Bootstrap表单控件使用方法详解
Jan 11 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
vue.js计算属性computed用法实例分析
Jul 06 Javascript
在vue中多次调用同一个定义全局变量的实例
Sep 25 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
Jun 06 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
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的ob_start() 控制您的浏览器cache
2009/08/03 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
xml和web特殊字符
2009/04/28 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
javascript eval和JSON之间的联系
2009/12/31 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
python正则表达式之作业计算器
2016/03/18 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
环境科学专业教师求职信
2014/07/12 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
2014年护士长工作总结
2014/11/11 职场文书
2014年保育员工作总结
2014/12/02 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
react如何快速设置文件路径别名
2021/04/28 Javascript
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
浅谈Java父子类加载顺序
2021/08/04 Java/Android