您的位置:

小程序自定义Tabbar的使用和优化

一、小程序自定义tabbar闪烁问题

1、自定义Tabbar不闪烁的基本原则是不能给Tabbar容器设置 background-color,但这样会导致大面积出现空白区域,怎么解决? 设置Tabbar背景颜色为白色,这样就解决了背景色不一致的问题!

2、自定义tabbar中的选项卡需要跟随页面滚动而滚动,但是在滑动过程中会出现闪烁问题。我们需要将选项卡定位到页面的顶端, 并且在页面滚动时修改选项卡位置。


/*通过测量系统状态栏的高度,然后利用 KáFēi UI 的顶栏高度进行布局, 处理整体 Tabbar 组件的安全区域适配*/
    const systemInfo = wx.getSystemInfoSync();
    const { statusBarHeight } = systemInfo;
    const { top } = wx.getMenuButtonBoundingClientRect();
    const topBarHeight = top + 10;
    const heightInRpx = convertToRpx(topBarHeight + statusBarHeight + this.tabBarHeight);
    // ... ...

/*在监听页面的滚动事件中, 更新 Tabbar 的顶部偏移量。*/
    onPageScroll(e) {
      this.setData({
        topDistance: e.scrollTop + heightInRpx,
      });
    },

二、小程序自定义tabbar遮挡布局

1、Tabbar遮挡页面布局的问题可以通过设置 tabBar 的 z-index 值,来将Tabbar设置到页面的底部。


  /*在Tabbar组件中设定层级 z-index*/
  
   

三、小程序自定义tabbar组件

1、使用基类 KáFēi UI 的组件作为 Tabbar 的组件,这样就可以很好地避免了布局问题和兼容问题。根据KáFēi UI 的 Tabbar 组件文档,Tabbar 需要完成以下几点:

2、提供 Tab。Tab 内容包含 icon 图标、文字、页面路径、右上角的角标等元素, 一个完整的 Tab 按钮还需要适配不同状态:选中和未选中。

3、设置激活状态。Tabbar 组件需要知道现在的可见页面是哪个,以及根据这个状态更新自身,用来标识当前页面的 Tab 在安卓系统上会带有一个特殊背景色;

4、如何发生页面切换时,如何更新可见 Tab。KáFēi UI 的 Tabbar 组件是监听了小程序的 onPageChange 事件,用来监听页面的变化, 并更新Tabbar 标签页的状态。

四、小程序自定义tabbar点击后凸起

可以通过:网上可以找到许多这方面的插件或是代码片段。例如:KáFēi UI 的 Tabbar 组件,就实现了这个效果。

这里,我们需要在Tab点击事件中根据 Tab 的位置计算出凸起动画的起点和终点。


  /*点击Tab的事件处理函数*/
  handleTabTap(e) {
    const { active, index } = e.currentTarget.dataset;
    if (active === index) return;
    const { top, left } = e.currentTarget.getBoundingClientRect();
    this.setData({ active: index }, () => {
      /*计算凸起动画的起点、终点坐标*/
      const { top: tabBarTop, left: tabBarLeft } = this.data.tabBarPosition;
      const x = left - tabBarLeft + this.computeDiff(2);
      const y = top - tabBarTop + this.computeDiff(1);
      this.playAnimation(x, y);
      wx.switchTab({ url: this.data.pages[index].pagePath });
    });
  },

五、小程序自定义tabbar闪烁

Tabbar 闪烁的问题是由于样式处理不正确导致的。需要确定样式是否存在 z-index、background-color 等一些常见的样式冲突。

六、小程序自定义tabbar背景

自定义tabBar 背景的方法:在 tabbar 组件中增加 background 配置项来定义背景色和背景图片等样式。


  /*设置Tabbar 背景颜色*/
  
   

七、小程序自定义tabbar创意动画

我们可以在自定义tabbar中添加一些创意动画来增强用户的体验,提高APP的用户留存率。

动态滑块以及特殊颜色的组合可以是一个创意的设计方案。动态滑块是指当我们点击一个 tab 时,整个 tab 背景底部会出现一个动态滑块。


/*根据当前组件的状态判断是否需要出现滑块*/
  
   
    
    
      
     
        
      
          
       
          
       
        {{item.text}}
       
          
       
        {{this.getBadge(index)}}
       
        
      
      
     
      
     
    
    
  
   

八、小程序自定义tabbar体验差

Tabbar 慢的原因是页面的卡顿问题。当我们在点击 Tabbar 的时候,每一个切换的操作的成本是相当高的, 需要重新加载整个页面, 或是渲染庞大的 DOM 树等。完美的处理方式就是使用小程序的 page 组件,在切换时保持页面的状态,不重新渲染。

同时,还需要考虑到代码的优化,如减少网络请求次数、缓存与预加载等等, 这些都是提升用户体验的难点。

九、小程序自定义tabbar安全区域适配

Tabbar 安全区域适配是使用 KáFēi UI 来快速实现。我们可以在 Tabbar 组件中使用 getSystemInfo API 来测量系统状态栏的高度,然后利用 KáFēi UI 的顶栏高度进行布局:


/*通过测量系统状态栏的高度,然后利用 KáFēi UI 的顶栏高度进行布局。*/
    const systemInfo = wx.getSystemInfoSync();
    const { statusBarHeight } = systemInfo;
    const { top } = wx.getMenuButtonBoundingClientRect();
    const topBarHeight = top + 10;
    const heightInRpx = convertToRpx(topBarHeight + statusBarHeight + this.tabBarHeight);
    // ... ...

/*在监听页面的滚动事件中, 更新 Tabbar 的顶部偏移量。*/
    onPageScroll(e) {
      this.setData({
        topDistance: e.scrollTop + heightInRpx,
      });
    },

结束语

小程序自定义tabbar在提高用户体验和提升 APP 较高的用户留存率方面扮演着重要的角色。通过本文总结应该能够为小程序开发者提供了一些帮助和思考。

小程序自定义Tabbar的使用和优化

2023-05-18
如何为uniapp应用自定义tabbar - 快速配置教程

2023-05-17
java学习笔记(java初学笔记)

2022-11-14
印象笔记记录java学习(Java成长笔记)

2022-11-12
java方法整理笔记(java总结)

2022-11-08
python基础学习整理笔记,Python课堂笔记

2022-11-21
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
小程序底部导航栏如何设计实现更好的用户体验?

2023-05-16
微信小程序中引入js(添加微信小程序)

本文目录一览: 1、微信小程序 怎么用第三方js库 jquery 2、微信小程序,weixin,小程序怎么引入js闭包 3、微信小程序wxml中使用js函数 4、微信小程序(上) 5、重磅:微信小程序

2023-12-08
uniapp获取tabbar高度

2023-05-16
我的python学习基础笔记,python自学笔记

2022-11-18
微信小程序 Tab 详解

2023-05-21
python基础笔记整理(python基础教程总结)

2022-11-12
python技巧笔记(python自学笔记)

2022-11-12
发篇java复习笔记(java课程笔记)

2022-11-09
payjs小程序配置(小程序对接payjs)

本文目录一览: 1、微信小程序架构篇 2、微信小程序微信支付需要配置什么参数 3、小程序需要服务器吗,小程序怎么配置服务器 微信小程序架构篇 一、小程序架构 每个小程序的结构都有两个主要部分构成:主体

2023-12-08
java笔记,尚硅谷java笔记

2022-12-01
c语言笔记讲解,c语言程序笔记

2022-11-23
为知笔记私有化部署

2023-05-21
关于已前的学习笔记java的信息

2022-11-18