小程序自定義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 較高的用戶留存率方面扮演著重要的角色。通過本文總結應該能夠為小程序開發者提供了一些幫助和思考。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245387.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:08
下一篇 2024-12-12 13:08

相關推薦

  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 改善Python程序的90個建議pdf網盤

    本文將從多個方面對改善Python程序的90個建議pdf網盤進行詳細闡述,幫助Python開發者提高程序的性能和效率。 一、代碼優化 1、使用map函數或列表推導式代替for循環。…

    編程 2025-04-29

發表回復

登錄後才能評論