uniapp 封裝自定義頭部導航欄

封裝原因

項目中有時候需要使用自定義的頭部導航欄,原生的無法滿足需求

參數

屬性名描述示例
title標題字符串:'首頁'
bgColor背景色字符串:'#fff'
type左側的操作內容字符串:'all',詳細值請在下方查看

參數解釋

type

  • all 有返回和回到首頁
  • back 只有返回
  • home 只有回到首頁
  • none 什么都沒有

注意點

  • 組件有一個默認插槽,如果有特殊要求的導航欄可以使用插件進行自定義
  • title和type都是默認插槽中內容的值,所以如果你使用了插槽來自定義頭部導航欄的話title和type會失效

代碼

<template><viewclass="navbar-box":style="{ 'background-color': props.bgColor }"v-if="statusBarHeight && navBarHeight"><!-- 狀態欄 --><view :style="{ height: statusBarHeight + 'px' }"></view><!-- 導航欄 --><view :style="{ height: navBarHeight + 'px' }"><slot><div class="navbar-default"><div class="default-left" v-if="props.type != 'none'"><view class="default-all" v-if="props.type == 'all'"><u-icon name="arrow-left" color="#fff" size="20" @click="goBack"></u-icon><view class="default-line"></view><u-icon name="home" color="#fff" size="20" @click="goHome"></u-icon></view><view class="default-back" v-if="props.type == 'back'"><u-icon name="arrow-left" color="#fff" size="20" @click="goBack"></u-icon></view><view class="default-home" v-if="props.type == 'home'"><u-icon name="home-fill" color="#fff" size="20" @click="goHome"></u-icon></view></div><view class="default-title">{{ props.title }}</view></div></slot></view></view><!-- 占位 --><view :style="{ height: statusBarHeight + navBarHeight + 'px' }"></view>
</template>
<script setup>import { ref, onMounted, computed, watchEffect } from 'vue';import { onLoad } from '@dcloudio/uni-app';const props = defineProps({title: {type: String,default: '',},bgColor: {type: String,default: '#fff',},type: {type: String,default: 'all',},});onMounted(() => {geStatusBarHeight();getNavBarHeight();});let statusBarHeight = ref(0);let navBarHeight = ref(0);// 獲取狀態欄高度function geStatusBarHeight() {statusBarHeight.value = uni.getSystemInfoSync()['statusBarHeight'];}// 獲取導航欄高度function getNavBarHeight() {// #ifdef MP-WEIXINlet menuButtonInfo = uni.getMenuButtonBoundingClientRect(); // 膠囊信息// 導航欄高度 = 膠囊高度 + 上間距 + 下間距 + 微調navBarHeight.value =menuButtonInfo.height +(menuButtonInfo.top - uni.getSystemInfoSync()['statusBarHeight']) * 2 +2;// #endif// #ifdef APP-PLUS || H5navBarHeight.value = 44;// #endif}// 返回上一頁function goBack() {const pages = getCurrentPages();if (pages.length == 1) {uni.reLaunch({url: '/pages/home/index',});return;}uni.navigateBack();}// 去首頁function goHome() {uni.reLaunch({url: '/pages/home/index',});}
</script><style lang="scss" scoped>.navbar-box {position: fixed;top: 0;left: 0;width: 100%;z-index: 2000;.navbar-default {height: 100%;display: flex;justify-content: center;align-items: center;position: relative;.default-left {position: absolute;top: 50%;left: 24rpx;transform: translateY(-50%);.default-all {display: flex;justify-content: center;align-items: center;padding: 10rpx 30rpx;background: rgba(0, 0, 0, 0.5);border-radius: 32rpx;.default-line {width: 2rpx;height: 40rpx;background: #afafaf;margin: 0 20rpx;}}.default-back,.default-home {width: 63rpx;height: 63rpx;background: rgba(0, 0, 0, 0.5);border-radius: 50%;display: flex;justify-content: center;align-items: center;}}.default-title {color: #000;font-weight: bold;font-size: 16px;}}}
</style>

?

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

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

相關文章

docker學習筆記(五)--docker-compose

文章目錄 常用命令docker-compose是什么yml配置指令詳解versionservicesimagebuildcommandportsvolumesdepends_on docker-compose.yml文件編寫 常用命令 命令說明docker-compose up啟動所有docker-compose服務&#xff0c;通常加上-d選項&#xff0c;讓其運行在后臺docker-co…

Linux中inode

磁盤的空間管理 如何對磁盤空間進行管理&#xff1f; 假設在一塊大小為500G的磁盤中&#xff0c;500*1024*1024524288000KB。在磁盤中&#xff0c;扇區是磁盤的基本單位&#xff08;一般大小為512byte&#xff09;&#xff0c;而文件系統訪問磁盤的基本單位是4KB&#xff0c;因…

5G揚帆乘勁風,遨游通訊賦能千行百業譜新篇

在大型工廠&#xff0c;輕觸手機屏幕&#xff0c;實時庫存數據、人員定位等信息便躍然眼前、一目了然&#xff1b;在邊遠油田&#xff0c;動動手指&#xff0c;即可實時查詢設備溫度、危險氣體濃度等信息&#xff0c;大數據瞬間盡在“掌”握……在遨游5G防爆智能手機的助力下&a…

RT Thread Studio新建STM32F407IG工程文件編譯提示錯誤

編譯提示錯誤 原因: RT 源碼使用4.0.3的話&#xff0c;請用STM32F4支持包的0.2.2版本&#xff0c;就不會出錯了。 如果支持包用0.2.3版本的話&#xff0c;需要用RT內核4.1.0版本。0.2.3 版本更新了一些針對內核4.1.0的驅動代碼&#xff0c;這幾個定義都是4.1.0里的。

學生管理系統(java)

1.前期準備 &#xff08;1&#xff09;新建java項目 &#xff08;2&#xff09;新建java軟件包以及三個文件Student.java,Student.txt,StuSystem.java Student.java package student_management_system;public class Student {private String id;private String name;private…

JavaWeb學習(2)(Cookie原理(超詳細)、HTTP無狀態)

目錄 一、HTTP無狀態。 &#xff08;1&#xff09;"記住我"&#xff1f; &#xff08;2&#xff09;HTTP無狀態。 &#xff08;3&#xff09;信息存儲客戶端中。如何處理&#xff1f; 1、loaclStorage與sessionStorage。 2、Cookie。 二、Cookie。 &#xff08;1&…

SpringBoot教程(三十二) SpringBoot集成Skywalking鏈路跟蹤

SpringBoot教程&#xff08;三十二&#xff09; | SpringBoot集成Skywalking鏈路跟蹤 一、Skywalking是什么&#xff1f;二、Skywalking與JDK版本的對應關系三、Skywalking下載四、Skywalking 數據存儲五、Skywalking 的啟動六、部署探針 前提&#xff1a; Agents 8.9.0 放入 …

flask創建templates目錄存放html文件

首先&#xff0c;創建flask項目&#xff0c;在pycharm中File --> New Project&#xff0c;選擇Flask項目。 然后&#xff0c;在某一目錄下&#xff0c;新建名為templates的文件夾&#xff0c;這時會是一個普通的文件夾。 然后右擊templates文件夾&#xff0c;選擇Unmark as …

Java進階(注解,設計模式,對象克隆)

Java進階(注解&#xff0c;設計模式&#xff0c;對象克隆) 一. 注解 1.1 什么是注解 java中注解(Annotation)&#xff0c;又稱java標注&#xff0c;是一種特殊的注釋 可以添加在包&#xff0c;類&#xff0c;成員變量&#xff0c;方法&#xff0c;參數等內容上 注解會隨同…

部署loki,grafana 以及springcloud用法舉例

文章目錄 場景docker 部署grafanadocker-compose部署loki維護配置文件 local-config.yaml維護docker-compose.yml配置啟動 grafana 添加loki數據源springcloud用法舉例查看loki的explore,查看日志 場景 小公司缺少運維崗位&#xff0c;需要研發自己部署日志系統&#xff0c;elk…

keil報錯---connection refused due to device mismatch

解決辦法如下&#xff1a; 記得改成1 把Enable取消

第三節、電機定速轉動【51單片機-TB6600驅動器-步進電機教程】

摘要&#xff1a;本節介紹用定時器定時的方式&#xff0c;精準控制脈沖時間&#xff0c;從而控制步進電機速度 一、計算過程 1.1 電機每一步的角速度等于走這一步所花費的時間&#xff0c;走一步角度等于步距角&#xff0c;走一步的時間等于一個脈沖的時間 w s t e p t … ……

vue中pdf.js的使用,包括pdf顯示,跳轉指定頁面,高亮關鍵詞

目錄 一、下載pdf.js 二、引入到本地的項目中 三、實現預覽pdf 四、跳轉到指定頁面 五、利用pdf里面的find查找關鍵詞 六、修改頁面大小為實際大小 一、下載pdf.js https://github.com/mozilla/pdf.js 里面有很多的版本&#xff0c; 高版本的可能瀏覽器不兼容或者還要考…

OD B卷【連續字母長度】

題目 給定一個字符串&#xff0c;只包含大寫字母&#xff0c;求在包含同一字母的子串中&#xff0c;長度第k長的子串的長度&#xff0c;相同字母只取最長的那個子串。 輸入描述&#xff1a; 第一行輸入一個子串&#xff08;長【1,100】&#xff09;&#xff0c;只包含大寫字母…

python中的 Pydantic 框架介紹

Pydantic 框架介紹 Pydantic 是一個用于數據驗證和設置管理的 Python 庫。它主要通過數據模型類的定義來處理 JSON 數據、解析請求和響應數據&#xff0c;并提供自動化的驗證和轉換。Pydantic 主要用于處理 Python 類型的安全性和驗證&#xff0c;尤其在 FastAPI 等現代 Pytho…

橋接模式和組合模式的區別

橋接模式&#xff08;Bridge Pattern&#xff09;和組合模式&#xff08;Composite Pattern&#xff09;都是結構型設計模式&#xff0c;旨在解決對象結構的復雜性問題&#xff0c;但它們的應用場景和目的有所不同。以下是它們的區別&#xff1a; 1. 定義與目的 橋接模式&…

Qt 小項目 學生管理信息系統

主要是對數據庫的增刪查改的操作 登錄/注冊界面&#xff1a; 主頁面&#xff1a; 添加信息&#xff1a; 刪除信息&#xff1a; 刪除第一行&#xff08;支持多行刪除&#xff09; 需求分析&#xff1a; 用QT實現一個學生管理信息系統&#xff0c;數據庫為MySQL 要求&#xf…

14.數據容器-set集合

特點 無序的&#xff0c;元素不重復&#xff0c;自帶去重功能。 可以容納不同類型的元素數據。 # 定義一個空set my_set {} your_set set() my_set {aa, bb, bb, aa} # {aa, bb} print(my_set) 因為set集合是無序的&#xff0c;所以集合不支持下標索引訪問。所以set集合…

“量子躍遷與數據織網:深入探索K最近鄰算法在高維空間中的優化路徑、神經網絡融合技術及未來機器學習生態系統的構建“

&#x1f3bc;個人主頁&#xff1a;【Y小夜】 &#x1f60e;作者簡介&#xff1a;一位雙非學校的大二學生&#xff0c;編程愛好者&#xff0c; 專注于基礎和實戰分享&#xff0c;歡迎私信咨詢&#xff01; &#x1f386;入門專欄&#xff1a;&#x1f387;【MySQL&#xff0…

硬件選型規則

光源選型: 先用型號中帶H的&#xff0c;沒有的選標準的. 光源和光源控制器的搭配需要確保接口一致。 根據型號表中的最佳工作距離和相機的尺寸。 光源控制器選型&#xff1a; 首先選擇海康風格系列光源控制器考慮與光源的接口匹配。功率應該滿足接近光源功率。檢查是否退市…