uniapp小程序自定義中間凸起樣式底部tabbar

我自己寫的自定義的tabbar效果圖自定義tabbar效果圖
廢話少說咱們直接上代碼,一步一步來

第一步:

找到根目錄下的 pages.json 文件,在 tabBar 中把 custom 設置為 true,默認值是 false。list 中設置自定義的相關信息,

pagePath: 頁面路徑;
iconPath: 點擊前顯示的圖片;
selectedIconPath: 點擊后顯示的圖片;
text: 底部導航的名稱。
在這里插入圖片描述

第二步

在根目錄下創建 components 文件夾用來存放自定義tabBar組件,小伙伴們可以自定義文件夾和文件的名稱。記得命名要規范哦!!!
在這里插入圖片描述

第三步

咱也不截圖了,看了那么多的文章全他媽截圖,咱直接上代碼方便有需要的小伙伴使用!!!!

<template><view class="tabbar-container flex items-center"><!-- isRound是中間凸出樣式的標志,用來判斷當前子級是否是凸出樣式的 --><view :class="!item.isRound ? 'square' : 'is-square'" v-for="(item, index) in tabbarList" :key="index" @click="tabbarChange(index, item)"><!-- 不是凸出的子級 --><template v-if="!item.isRound"><view class="item-top flex justify-center flex-col"><u-image :src="active == index ? item.selectedIconPath : item.iconPath" :width="item.width":height="item.height"></u-image></view><view class="item-bottom" :class="{'active': active === index}"><text>{{ item.text }}</text></view></template><!-- 凸出的子級 --><template v-else><view class="flex flex-col justify-center items-center center-round"><view class="flex flex-col justify-center items-center"><u-image :src="active == index ? item.selectedIconPath : item.iconPath" :width="item.width":height="item.height"></u-image><text :class="{'round-active': active === index}">{{ item.text }}</text></view></view></template></view></view>
</template>
<script>export default {name: 'Tabbar',props: {tabbarIndex: {type: Number,default: 0}},data() {return {// tabbar列表,配置自定義用到的屬性字段tabbarList: [{pagePath: "/pages/homePage/index",iconPath: "/static/images/tabbar/index.png",selectedIconPath: "/static/images/tabbar/index-selected.png",text: "首頁",width: '45rpx',height: '41rpx',isRound: false},{pagePath: "/pages/information/index",iconPath: "/static/images/tabbar/data.png",selectedIconPath: "/static/images/tabbar/data-selected.png",text: "數據",width: '44rpx',height: '43rpx',isRound: false},{pagePath: "/pages/aiRecommend/index",iconPath: "/static/images/tabbar/ai-recommend.png",selectedIconPath: "/static/images/tabbar/ai-recommend.png",text: "智能推薦",width: '120rpx',height: '120rpx',isRound: true},{pagePath: "/pages/vip/index",iconPath: "/static/images/tabbar/vip.png",selectedIconPath: "/static/images/tabbar/vip-selected.png",text: "會員",width: '39rpx',height: '37rpx',isRound: false},{pagePath: "/pages/center/index",iconPath: "/static/images/tabbar/center.png",selectedIconPath: "/static/images/tabbar/center-selected.png",text: "我的",width: '40rpx',height: '41rpx',isRound: false},],active: 0,isRound: false,}},mounted() {this.active = this.tabbarIndex},methods: {tabbarChange(index, item) {this.$emit('updateTabbar', index)uni.switchTab({url: item.pagePath});}}}
</script><style lang="scss" scoped>.tabbar-container {width: 100%;height: 132rpx;position: fixed;bottom: 0;.square {width: 100%;height: 130rpx;background: #FFFFFF;display: flex;flex-direction: column;align-items: center;justify-content: center;.round-active {color: #207BDB;}}.square .item-top {width: 45rpx;height: 45rpx;}.is-square {width: 100%;height: 130rpx;background: #FFFFFF;display: flex;flex-direction: column;align-items: center;justify-content: center;.round-active {color: #207BDB;}}.center-round {width: 203rpx;height: 130rpx;background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMsAAAAlCAYAAADstR3BAAADx0lEQVR4nO3deajnUxjH8dc1Y2zDzFjGvkZkKcofpNGgTCl/oGRfyto0iJJQypa1KJT9H7KUJYSsDRFlGqQUyi4kDVe2y1wdnqmZ3HSv+1vOOd/zrl/3d3/3j/s8p+/n9zzPOc85Z2R8fFxjIGyHvbEXdsC28dkcrIeNMAM/4s8waDbWxk/4HSvwDT7HZ3gfb+O9+HujjzSx9IcR7IGDsRAHYpM+/r8xvIOleAmvhMAaPaSJpXekqHAAjsCRETWGxW94EY/hcXxXwfgOnSaW6bMbTsGJ2CpD+1LUeRr3xs+xDGwqkiaW/8eMiCDnYEFBdn+Le3ArvsjAnqJoYpkaqeA+M0QyzDRruoxFinYdlhXsx0BpYpkcacZqCc7rc6E+DFJqdgXeqMyvntPE8t/MDpFciLk5G9oDnsXFWF68J32iiWVi1oqi/UpsmaOBfWIlHsJFsY7TWI0mln+zfxTA++Rm2AD5BVfjxnjfeTSxrMH8eDiOj0XFBp/EZMaTbSz+STe6zkikXKl15IQmlDVIbTlP4OGOpaMT0vXIkh6Gu3BIBrbkTupLuyDWaTpJVyNLih5n4N0mlEmTZgPvxlNdjTJdjCzzo/XjsAxsKZXvcToe7ZLTXYssi6I7twllemyMR3A71i/ZkanQFbHMxDV4BltkYE8tpFT2LezZBWe7kIZtjQcKa3gsjZ9DOPfX7GTtkWVBtG80ofSXlIrdh9tiZ2eV1CyWVIC+gM0ysKUrnI3nKmw2/ZsaxZL2mtyEOzArA3u6RtpG/WZsq66K2mqWeXgQh2ZgS9cZxXGxLlMFNUWWnWJPRhNKHmwY+//Pr8WhWiJLmrp8vk0LZ8u10fZfNDWIZVe82gr57LkKl5bsQOlp2FF4rQmlCC6JdZg5pTpQamRJ+fDNODUDWxpT41OcFAcBFkWJkWVRdAs3oZTJ9ng5vuw2KMmDkiLLprgBJ2dgS6M3fIzF0bOXPSVEllmx6ejDJpTq2DGOYkpi2T1353KOLGmD1jG4HDtnYE+jv/wRXReX5Xo2c65iOShOF9kvA1sagyVduXF91DSjOY19TmJZB8fi3LjHpNFtVsSRVLfg6xxGIgexpP0mp+GstgLfmIBV5zLfGXfPrBzWIA1LLNvgcBwdF/20I5kak+GrOJYpief1qHMGxqDEkmY99o1NWAvjqrhGYzr8EOs1S0M4ae3t136OaBLLvNV+H52iWufGavqqVzrIYPO4LzEJZJdocqz9UO3G8EnP7Qfx+iju3fwyZtbSc51qoDR5kN6nm9EmS3quZ2LdvwC4r+EYTWev0AAAAABJRU5ErkJggg==');background-position: center top;background-size: 100% 37rpx;background-repeat: no-repeat;position: absolute;margin-top: -72rpx;text {font-weight: 500;font-size: 20rpx;color: #555B66;position: absolute;top: 117rpx;}}.item-bottom {font-weight: 500;font-size: 20rpx;color: #555B66;margin-top: 14rpx;}.active {color: #207BDB;}}
</style>

注意:小程序背景圖無法使用本地圖片,要么轉成base64,要么把圖片存到服務器上,然后調用接口把圖片路徑返回。推薦第二種方法。

我寫的有點繁瑣,中間凸起的樣式應該為一整塊,可是ui只給了頂部的白色圖片導致寫的代碼有點多。不過大體的思路差不多都是這樣,小伙伴們也可以參考其他博主寫的文章的思路去編寫自定義組件。
在這里插入圖片描述
這是我用到的圖片,小伙伴們可以下載下來配合代碼進行使用。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

第四步

在需要的頁面中引用自定義組件

<template><Tabbar :tabbar-index="tabbarIndex" @updateTabbar="updateTabbar"></Tabbar>
</template>
<script>import Tabbar from "@/components/tabbar/tabbar.vue"components: { Tabbar },data() {return {tabbarIndex: 4,}},methods: {updateTabbar(e) {this.tabbarIndex = e},}
</script>

有需求的小伙伴們可以試試,我寫的并不是很完美但是大體的思路是這樣的,小伙伴們可以根據自己項目的需求進行改動。此文章可作為參考使用,希望能幫到有需求的小伙伴!!!!

如果有用的話就點擊收藏起來吧!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67989.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

四、GPIO中斷實現按鍵功能

4.1 GPIO簡介 輸入輸出&#xff08;I/O&#xff09;是一個非常重要的概念。I/O泛指所有類型的輸入輸出端口&#xff0c;包括單向的端口如邏輯門電路的輸入輸出管腳和雙向的GPIO端口。而GPIO&#xff08;General-Purpose Input/Output&#xff09;則是一個常見的術語&#xff0c…

vscode+CMake+Debug實現 及權限不足等諸多問題匯總

環境說明 有空再補充 直接貼兩個json tasks.json {"version": "2.0.0","tasks": [{"label": "cmake","type": "shell","command": "cmake","args": ["../"…

【Elasticsearch】post_filter

post_filter是 Elasticsearch 中的一種后置過濾機制&#xff0c;用于在查詢執行完成后對結果進行過濾。以下是關于post_filter的詳細介紹&#xff1a; 工作原理 ? 查詢后過濾&#xff1a;post_filter在查詢執行完畢后對返回的文檔集進行過濾。這意味著所有與查詢匹配的文檔都…

《數據可視化新高度:Graphy的AI協作變革》

在數據洪流奔涌的時代&#xff0c;企業面臨的挑戰不再僅僅是數據的收集&#xff0c;更在于如何高效地將數據轉化為洞察&#xff0c;助力決策。Graphy作為一款前沿的數據可視化工具&#xff0c;憑借AI賦能的團隊協作功能&#xff0c;為企業打開了數據協作新局面&#xff0c;重新…

Vue 2 與 Vue 3 的主要區別

Vue.js 是一個流行的前端框架&#xff0c;用于構建用戶界面和單頁應用。自從 Vue 2 發布以來&#xff0c;社區對其進行了廣泛的應用和擴展&#xff0c;而 Vue 3 的發布則帶來了許多重要的改進和新特性。 性能提升 Vue 3 在響應式系統上進行了重大的改進&#xff0c;采用了基于…

從零開始:用Qt開發一個功能強大的文本編輯器——WPS項目全解析

文章目錄 引言項目功能介紹1. **文件操作**2. **文本編輯功能**3. **撤銷與重做**4. **剪切、復制與粘貼**5. **文本查找與替換**6. **打印功能**7. **打印預覽**8. **設置字體顏色**9. **設置字號**10. **設置字體**11. **左對齊**12. **右對齊**13. **居中對齊**14. **兩側對…

【IoCDI】_Spring的基本掃描機制

目錄 1. 創建測試項目 2. 改變啟動類所屬包 3. 使用ComponentScan 4. Spring基本掃描機制 程序通過注解告訴Spring希望哪些bean被管理&#xff0c;但在僅使用Bean時已經發現&#xff0c;Spring需要根據五大類注解才能進一步掃描方法注解。 由此可見&#xff0c;Spring對注…

vue 引入百度地圖和高德天氣 都得獲取權限

vue接入百度地圖---獲取ak https://blog.csdn.net/qq_57144407/article/details/143430661 vue接入高德天氣&#xff0c; 需要授權----獲取key https://www.jianshu.com/p/09ddd698eebe

通向AGI之路:人工通用智能的技術演進與人類未來

文章目錄 引言:當機器開始思考一、AGI的本質定義與技術演進1.1 從專用到通用:智能形態的范式轉移1.2 AGI發展路線圖二、突破AGI的五大技術路徑2.1 神經符號整合(Neuro-Symbolic AI)2.2 世界模型架構(World Models)2.3 具身認知理論(Embodied Cognition)三、AGI安全:價…

python中的命名規范

在python中&#xff0c;命名規范是編寫清晰&#xff0c;可讀性強代碼的重要部分&#xff0c;遵循這些規范可以使代碼更易于理解和維護。 Type命名約定命名例子函數&#xff08;Function&#xff09;小寫單詞&#xff0c;下劃線分割單詞function,delta_function方法&#xff08…

【工具變量】中國省級八批自由貿易試驗區設立及自貿區設立數據(2024-2009年)

一、測算方式&#xff1a;參考C刊《中國軟科學》任曉怡老師&#xff08;2022&#xff09;的做法&#xff0c;使用自由貿易試驗區(Treat Post) 表征&#xff0c;Treat為個體不隨時間變化的虛擬變量&#xff0c;如果該城市設立自由貿易試驗區則賦值為1&#xff0c;反之賦值為0&am…

Java進階總結——集合

Java進階總結——集合 說明&#xff1a;對于以上的框架圖有如下幾點說明 1.所有集合類都位于java.util包下。Java的集合類主要由兩個接口派生而出&#xff1a;Collection和Map&#xff0c;Collection和Map是Java集合框架的根接口&#xff0c;這兩個接口又包含了一些子接口或實…

計算機視覺和圖像處理

計算機視覺與圖像處理的最新進展 隨著人工智能技術的飛速發展&#xff0c;計算機視覺和圖像處理作為其中的重要分支&#xff0c;正逐步成為推動科技進步和產業升級的關鍵力量。 一、計算機視覺的最新進展 計算機視覺&#xff0c;作為人工智能的重要分支&#xff0c;主要研究如…

3.PPT:華老師-計算機基礎課程【3】

目錄 NO12? NO34? NO56? NO789? NO12 根據考生文件夾下的Word文檔“PPT素材.docx”中提供的內容在PPT.pptx中生成初始的6張幻燈片 新建幻燈片6張→ctrlc復制→ctrlv粘貼開始→新建幻燈片→幻燈片(從大綱)→Word文檔注?前提是&#xff1a;Word文檔必須應用標題1、標題2…

(三)QT——信號與槽機制——計數器程序

目錄 前言 信號&#xff08;Signal&#xff09;與槽&#xff08;Slot&#xff09;的定義 一、系統自帶的信號和槽 二、自定義信號和槽 三、信號和槽的擴展 四、Lambda 表達式 總結 前言 信號與槽機制是 Qt 中的一種重要的通信機制&#xff0c;用于不同對象之間的事件響…

藍橋杯備賽題目練習(一)

一. 口算練習題 ## 題目描述 王老師正在教簡單算術運算。細心的王老師收集了 i 道學生經常做錯的口算題&#xff0c;并且想整理編寫成一份練習。 編排這些題目是一件繁瑣的事情&#xff0c;為此他想用計算機程序來提高工作效率。王老師希望盡量減少輸入的工作量&#xff0c;比…

深入探討:服務器如何響應前端請求及后端如何查看前端提交的數據

深入探討&#xff1a;服務器如何響應前端請求及后端如何查看前端提交的數據 一、服務器如何響應前端請求 前端與后端的交互主要通過 HTTP 協議實現。以下是詳細步驟&#xff1a; 1. 前端發起 HTTP 請求 GET 請求&#xff1a;用于從服務器獲取數據。POST 請求&#xff1a;用…

毫秒級響應的VoIP中的系統組合推薦

在高并發、低延遲、毫秒級響應的 VoIP 場景中&#xff0c;選擇合適的操作系統組合至關重要。以下是針對 Ubuntu linux-lowlatency、CentOS Stream kernel-rt 和 Debian 自定義 PREEMPT_RT 的詳細對比及推薦&#xff1a; 1. 系統組合對比 特性Ubuntu linux-lowlatencyCentO…

【LeetCode 刷題】回溯算法(4)-排列問題

此博客為《代碼隨想錄》二叉樹章節的學習筆記&#xff0c;主要內容為回溯算法排列問題相關的題目解析。 文章目錄 46.全排列47.全排列 II 46.全排列 題目鏈接 class Solution:def permute(self, nums: List[int]) -> List[List[int]]:res, path [], []used [0] * len(n…

基于多智能體強化學習的醫療AI中RAG系統程序架構優化研究

一、引言 1.1 研究背景與意義 在數智化醫療飛速發展的當下,醫療人工智能(AI)已成為提升醫療服務質量、優化醫療流程以及推動醫學研究進步的關鍵力量。醫療 AI 借助機器學習、深度學習等先進技術,能夠處理和分析海量的醫療數據,從而輔助醫生進行疾病診斷、制定治療方案以…