亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序中怎么自定義導航欄

發布時間:2021-06-17 15:50:06 來源:億速云 閱讀:192 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關微信小程序中怎么自定義導航欄,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

step1 自定義

第一步 取得導航欄的控制權

小程序支持自定義導航欄,只需要在app.json文件中,window項中配置

"navigationStyle": "custom"

這樣微信就放開了導航欄的控制權,只保留右上角的膠囊。

頁面會從視窗的頂部開始渲染,如圖

微信小程序中怎么自定義導航欄

接下來,我們要做的就是實現一個導航欄組件,把它放置在頁面原來的默認導航欄的位置,內容什么的完全由開發者自己定制。

step2 功能點

第二步 梳理導航欄的功能點

  • 導航欄高度(各個機型動態適配)

  • 導航欄內容定制

    • 所有機型title居中顯示(自己布局實現)

    • 首頁導航欄左上角顯示個人中心、中部title使用個性圖標

    • 嵌套頁面左上角顯示返回上一頁 + 回到首頁按鈕

    • 非常規首頁左上角顯示回到首頁按鈕

導航欄高度 包含兩個部分:工具欄和title欄, 工具欄的高度一般是固定的20px,title欄的高度需要計算

導航欄內容的定制,需要識別當前頁面的性質,根據不同的頁面展示不同的內容,可以通過獲取當前的頁面路由棧來判定當前的頁面性質

微信小程序中怎么自定義導航欄

step3 導航欄組件基本結構

目前快狗打車小程序的基本結構

// navBar.wxml
<cover-view class='place-holder'></cover-view>
<cover-view class='nav-bar'>
 <cover-view class='tool-bar' style='height: 20px'></cover-view>
 <cover-view class='title-bar'>
  <cover-view class='left-cell'>
   // scene0 常規首頁 個人中心按鈕
   // scene1 非常規首頁 回首頁按鈕
   // scene2 嵌套頁  返回上一頁按鈕 + 回首頁按鈕
  </cover-view>
  <cover-view class='center-cell'>
   // scene0 常規首頁 個性化title
   // scene1 其他頁 正常title
  </cover-view>
  <cover-view class='right-cell'>
   // 占位用的
  </cover-view>
 </cover-view>
</cover-view>

Tips:

組件內多了一個占位的place-holder塊,是因為某些頁面有類似滾動列表的需求,要保證導航欄始終在視窗的頂部的話,需要使用定位,定位之后脫離文檔流,在最初的時候需要占位塊保證后續的頁面內容不會被導航欄遮擋

使用cover-view布局是因為快狗的業務中有類似map的原生組件,使用view的話有被遮擋的風險

step4 高度計算

需要計算title-bar的高度

在 默認導航欄 & 無底部tab欄 的情況下,使用wx.getSystemInfoSync獲取手機信息,可以看到兩項信息:

  • screenHeight 屏幕高度,單位px

  • windowHeight 可使用窗口高度,單位px

這種情況下,二者的差值就是默認的導航欄的高度, 但是在設置了"navigationStyle": "custom"之后,二者的值是一樣的了,因此導航欄的高度我們需要使用統計的經驗值。

根據統計,得到如下的結果:

{
 'iPhone': 64,
 'iPhoneX': 88,
 'Android': 68,
 'samsung': 72
}

工具欄的高度可根據wx.getSystemInfoSync返回值中的statusBarHeight獲取。

至此,我們得到了導航欄的相關的高度值

// 導航欄總高度 & 占位塊高度
placeHoder = totalBar = {
 'iPhone': 64,
 'iPhoneX': 88,
 'Android': 68,
 'samsung': 72
}
// 時間、信號等工具欄的高度
toolBar = systermInfo.statusBarHeight
// 頁面title欄的高度
titleBar = totalBar - toolBar

step5 內容定制

在組件的生命周期函數attached中,我們可以獲取當前的頁面路由棧

let pages = getCurrentPages()
let current_page = pages[pages.length - 1].route 
const NORMAL_ENTRY = '常規的入口頁路徑'

// scene 0 常規入口頁 個性化title、個人中心
pages.length === 1 && current_page === NORMAL_ENTRY
// scene 1 非常規入口頁 回首頁
pages.length === 1 && current_page !== NORMAL_ENTRY
// scene 2 嵌套頁面 返回 + 回首頁
pages.length > 1

以上就是微信小程序中怎么自定義導航欄,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜川市| 铁岭县| 乐安县| 镶黄旗| 靖安县| 绍兴市| 泰州市| 横山县| 麻江县| 孝感市| 响水县| 大姚县| 洛阳市| 扎鲁特旗| 三原县| 武义县| 大关县| 武夷山市| 防城港市| 凉山| 太和县| 资中县| 镇安县| 阿拉尔市| 佳木斯市| 绍兴市| 鹤壁市| 莱阳市| 乐安县| 张家口市| 乌兰浩特市| 梨树县| 岢岚县| 吉木萨尔县| 迁西县| 兴业县| 连云港市| 双柏县| 侯马市| 保山市| 闸北区|