在一个微信小程序中想要用到两种不同的tabbar样式,需要在appjs中自定义,在页面加载时进行调用。
比如一个小程序需要两个版本(用户版、商家版),并且能通过一个按钮在两个版本间进行切换,可能会用到这种方式。
此处以两个页面(index,logs)显示两种tabbar样式为例,通过切换按钮进行切换。
首先有一个模板文件:tabbarwxml
在appjson中无需定义“tabBar”
在appjs中自定义如下
在appwxss中定义显示样式
indexwxml,用到自定义tabbar的页面的首部都需要引入模板文件
indexjs
logsjs
加载自定义tabbar的那句话(appeditTabBar)写在onload或onshow中都可以。
只写了两个主页面,其他页面可自行定义跳转。
最后放上效果图:
很多时候在做tab导航的点击时我们都会要上一个过渡的动画,不然的话会显得生硬,用户没有达到比较佳的用户体验。如下图:
在开发者工具中预览效果
我们可以用两种方法实现这样动画,css3的过渡或者用js去控制。省事的当然是用css3来写啦,我们先来看看css3的具体实现。
css3实现:
先看最基本的wxml布局:
从图中可以看到,当前tap的line是用专门用一个元素来做的。那么怎么让line跟着tab走动呢?就是红圈部分,用translateX位移来移动,而transitions实现一个过渡效果。
curtab就是当前点击tab的index,点击的tab的index 250(一个tab的宽度)就能让line跟着走对应的位移了。
来看看js部分:
这样就能简单实现一个tab跟随动画啦。
(以上方法有个不足,就是tab的宽度是固定的,但是在实际开发中更多时候会遇到宽度不固定的情况。)
js实现:
有些喜欢折腾的同学说想要js来实现呢?当然也是可以的,用js来实现的思路也是一样,用控制line元素的translateX值。那么怎么知道应为位移多少呢?就是动态的去获取该位移的值,然后赋给translateX。
说到动态的去获取元素额left值,可以用到小程序的 wxcreateSelectorQuery 这个api在传入元素后返回元素的四个位移值。(这里不细说api的用户,不清楚的同学请自行查看文档哈哈哈)
那是不是可以:
来看看具体的实现:
emmm最后说一下,前端时间看到过一个很骚的 *** 作,同样是用纯css实现这种跟随动画,先看看效果图:
css
参照微信小程序官方文档, 自定义tabbar ,但该文档只是实现了自定义tabbar,没有实现不同角色不同的tabbar,且官方文档中的custom-bab-bar组件中的setData方法存在在真机上不能重新渲染的bug,可能是由于缓存造成的。
本项目仓库: customtabbar 。
主要是在tab的页面组件中调用getTabBar接口后再调用setData方法,从而实现了tabbar的重新渲染。
小程序在二级页面可以设置底部tabbar,设置方法为:
1、首先打开微信开发者工具,找到项目文件目录中的appjson并打开它。
2、然后再Json中怎样一个key——“tabBar“。
3、然后是设置文本的颜色:"color":"#8a8a8a"。
4、设置文本选中时的颜色,"selectedColor":"#07c160。
5、设置tabbar的背景颜色,例如:"backgroundColor":"gray"。
6、设置tabbar的列表,也就是底部的菜单栏。"list":[{"pagePath":"pages/idndex/index",
"text":"首页", "iconPath":"images/tabbar/tabbar1png" }。
7、保存文件,在效果预览区域进行预览。
以上就是关于微信小程序自定义底部导航栏,切换不同页面显示不同tabbar全部的内容,包括:微信小程序自定义底部导航栏,切换不同页面显示不同tabbar、小程序 纯css 实现tab导航栏下划线跟随动画、微信小程序自定义tabbar,实现不同角色不同的tabbar等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)