微信小程序自定义底部导航栏,切换不同页面显示不同tabbar

微信小程序自定义底部导航栏,切换不同页面显示不同tabbar,第1张

在一个微信小程序中想要用到两种不同的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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10640408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存