关于tabbar部分,官方文档是有明确的说明的,当然,我这里是不存在把官方文档给你复制一遍的情况。我大概把我再看官方文档过程中遇到的坑,大概复述一下。

一:配置tabbar

这个主要是使用小程序自带的tabbar,在项目根目录下的app.json中配置,这个简单配置一下就可以了。

这里放一下我的app.json配置:

{"pages": ["pages/index/index","pages/logs/logs","pages/article/article","pages/board/board","pages/remark/remark"],"tabBar": {"selectedColor": "#31869B","list": [{"current": 0,"pagePath": "pages/index/index","text": "首页","iconPath": "/images/index-select.png","selectedIconPath": "/images/index-selected.png"},{"current": 1,"pagePath": "pages/remark/remark","text": "随言碎语","iconPath": "/images/sui-select.png","selectedIconPath": "/images/sui-selected.png"},{"current": 2,"pagePath": "pages/board/board","text": "留言板","iconPath": "/images/board-select.png","selectedIconPath": "/images/board-selected.png"}]},"usingComponents": {"weuitabbar": "/miniprogram_npm/weui-miniprogram/tabbar/tabbar"},"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "WeChat","navigationBarTextStyle": "black"},"style": "v2","sitemapLocation": "sitemap.json"
}

更详细的tabbar配置属性说明,请移步官方文档《tabbar》

最后效果如下图所示:

二:自定义tabbar

有些时候,官方的样式并不能满足我们的要求,这个时候,我们就需要自定义tabbar的样式,当然,这个官方也是有说明的,只是,说明比较简单,官方给了一段示例代码。具体请移步官方文档《自定义tabbar》

然后,我这里大概分享下我是怎么写的:

App.json中,tabbar有一个custom属性,这个很重要,如果将这个属性设置为true,那么程序会默认使用自定义的tabbar。

那么我的app.json中的tabbar部分代码,就变成了下面的这个样子:

"tabBar": {"custom": true,    },

在小程序根目录下创建目录custom-tab-bar,名字一定要是这个,别瞎起名。

在目录中创建组件index,注意,这里一定要注意,这里创建的是组件,而不是页面,虽然他们都是四个文件,但是他们是完全不一样的。

创建成功之后,文件目录如下图所示:

然后,我们开始编写四个文件中的代码:

(1):index.js

Component({data: {selected: 0,color: "#7A7E83",selectedColor: "#31869B",fontWeight:'bold',"list": [{"current": 0,"pagePath": "/pages/index/index","text": "首页","iconPath": "/images/index-select.png","selectedIconPath": "/images/index-selected.png"},{"current": 1,"pagePath": "/pages/remark/remark","text": "随言碎语","iconPath": "/images/sui-select.png","selectedIconPath": "/images/sui-selected.png"},{"current": 2,"pagePath": "/pages/board/board","text": "留言板","iconPath": "/images/board-select.png","selectedIconPath": "/images/board-selected.png"}]},attached() {},methods: {switchTab(e) {console.log(e);const idx = e.currentTarget.dataset.indexconst path = e.currentTarget.dataset.path// this.setData({//   selected: idx// })wx.switchTab({url: path,});}}
})

(2):index.json

这里边本来我打算用weui的tabbar组件来着,但是目前还没玩明白,这个回头再说。

{"component": true,"usingComponents": {"weuitabbar": "/miniprogram_npm/weui-miniprogram/tabbar/tabbar"}
}

(3):index.wxml

<!-- 自定义tab -->
<view class="tab-bar"><view wx:for="{{list}}" wx:key="index" class="top_view" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab" ><view><image class="img_" src="{{selected === index ?item.selectedIconPath : item.iconPath}}"></image></view><view style="color: {{selected === index ?selectedColor : color}}">{{item.text}}</view></view>
</view>

(4):index.wxss

.top_view{float:left;width:33%;text-align:center; font-size:12px;
}
.img_{width:28px;height:28px;
}
.tab-bar{width:100%;position: fixed;bottom:0;padding:10rpx;margin-left:-4rpx;background:#FFFFFF;font-size:20rpx;color:#fcf7f7;box-shadow: 6rpx 6rpx 6rpx 6rpx rgb(248, 245, 245);
}

(5):这个不单独指哪一个页面:

在tabBar跳转的页面,也就是tab 选中状态下,要在当前页面下,通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态。

举个简单的例子,比如现在我从其他页跳回首页,那么我需要在首页的index.js中的代码应该是如下的样子:

const app = getApp()
Page({data: {},onShow(){if (typeof this.getTabBar === 'function' &&this.getTabBar()) {this.getTabBar().setData({selected: 2    // 根据tab的索引值设置}) }}
})

这样操作完成之后,效果如下图所示:

但是吧,还有一个问题,来回切换的时候,图标会闪烁,这个使用官方给的这个方法,好像是没有什么太好的解决办法。

如果你有好的解决方式,请在下方评论。

文末有我开发时写的源码。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客
https://guanchao.site

欢迎访问我的小程序:

小程序(三)配置tabbar及自定义tabbar样式相关推荐

  1. 微信小程序入门二:底部导航tabBar

    小程序底部导航栏组件tabBar,可以参考下官方的API:tabBar 先看代码 //app.json {"pages":["pages/index/index" ...

  2. 入门微信小程序三(自定义组件)

    1.组件的创建 ① 在项目的根目录中,鼠标右键,创建 components -> test 文件夹 ② 在新建的 components -> test 文件夹上,鼠标右键,点击" ...

  3. 微信小程序—相关配置

    目录 微信小程序介绍 什么是小程序? 小程序可以干什么? 相关资料 第一个小程序 申请帐号 测试号申请 安装开发工具 你的第一个小程序 编译预览 目录结构 JSON 配置 小程序配置 app.json ...

  4. 逆战之微信小程序全局配置

    微信小程序之全局配置-1 小程序的配置分为全局配置.页面配置及sitemap 配置 全局配置 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置.文件内容为一个 JSON 对象,有以 ...

  5. 微信小程序全局配置参数详解app.json

    全局配置 cc文件内容为一个 JSON 对象,有以下属性: 配置项 entryPagePath 指定小程序的默认启动路径(首页),常见情景是从微信聊天列表页下拉启动.小程序列表启动等.如果不填,将默认 ...

  6. 从0到一开发微信小程序(3)—小程序框架配置

    文章目录 其他相关文章 1.小程序框架 1.1.全局配置 1.1.1.Pages 1.1.1.1.entryPagePath 1.1.1.2.生成页面方式 1.1.2.window 1.1.3.tab ...

  7. 微信小程序之配置app.json

    微信小程序之配置app.json 本人写了一个在线扫码借书的小程序,打算分享一下心得和代码,欢迎关注,再次希望各位大佬指出不足 {"pages": ["pages/ind ...

  8. 微信小程序 php配置,微信小程序的配置

    我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. 以下是一个包含了所有配置选项的简单配置app.json{ "pa ...

  9. 微信小程序开发学习5(自定义组件)

    微信小程序开发学习5(自定义组件) 1.学习目标 能够知道如何自定义小程序组件 能够知道小程序组件中behaviors的作用 能够知道如何安装和配置vant-weapp组件库 能够知道如何使用MobX ...

  10. 首页布局跟小程序如何配置Iconfont—小程序入门与实战(七)

    4-1 经过上一章节的学习我们已经搭建了项目的整个框架,雏形已成.接下来我们只需要的往里面堆东西就可以了. 设计稿网址(14天分享有效,过期的可以找我拿): https://lanhuapp.com/ ...

最新文章

  1. “ INSERT IGNORE”与“ INSERT…ON DUPLICATE KEY UPDATE”
  2. Linux下的USB总线驱动 mouse
  3. python怎么读取txt文件内容然后保存到excel-Python实现读取txt文件并转换为excel的方法示例...
  4. 如何在Eclipse中查看Android API源码以及support包源码
  5. ROS: Ubuntu16.04安装ROS-kinetic
  6. FreeRTOS应用开发笔记之一:FreeRTOS在STM32的移植
  7. UVA - 489 ​​​​​​​Hangman Judge
  8. 市场活动课件:SQL Server 索引优化
  9. jQuery——进阶(动画、循环、正则、事件冒泡、事件委托、DOM)
  10. 线性回归(二)---多元线性回归
  11. 【女生节】圆周率小数点后37373737位中,“37”出现的次数是?
  12. oracle in和exist的区别 not in 和not exist的区别
  13. 学习笔记1/5,操作系统之操作系统概念
  14. 大型网站技术架构思维导图
  15. rollup函数(分组后对每组数据分别合计)
  16. 小程序源码:老人疯狂裂变引流视频推广
  17. java swing choice_Java-GUI基础(三)java.swing
  18. Mac流程图制作工具:Diagrams
  19. 人工智能建立本体库_领域本体构建方法概述
  20. java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库

热门文章

  1. 第十三届蓝桥杯Java B组真题
  2. Windows10下修改盘符
  3. 自己设计一个图片加载框架
  4. HC05与STM32进行串口通讯实现与手机APP的数据透传
  5. python中tkinter模块窗口操作_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)...
  6. python实现分析你和你对象的聊天记录词云图
  7. 程序员的一些感悟,都活成自己想要的样子了吗?
  8. 多边形凹凸性的判断、自相交判断
  9. DISC职场人格与高效沟通技巧--王伟老师
  10. 用html和js编写黑洞数,数字黑洞作文400字