亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序自定義導航欄實例代碼

2020-03-21 16:00:18
字體:
來源:轉載
供稿:網友

背景

在做快狗打車小程序時,關于默認導航欄,我們遇到了以下的問題:

  • Android、IOS手機對于頁面title的展示不一致,安卓title的顯示不居中
  • 頁面的title只支持純文本級別的樣式控制,不能夠做更豐富的title效果
  • 左上角的事件無法監聽、定制
  • 路由導航單一,只能夠返回上一頁,深層級頁面的返回不夠友好

我們希望的是:在各個機型頁面上title一致性 & 個性化展示、取得左上角點擊事件控制權及深層級頁面的一鍵返回

實現

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 

根據不同的條件,展示不同的內容

最終效果

scene 0 常規首頁

微信小程序,導航欄,代碼

scene 1 非常規首頁

微信小程序,導航欄,代碼

scene 2 嵌套頁

微信小程序,導航欄,代碼

目前在生產環境99%的機型中,都可以完美的運行。

寫在最后

  • 自定義導航欄是全局生效的,一旦設置,各個原生小程序頁面都需要引入
  • 目前微信版本7+支持了針對特定頁面的自定義導航欄,可以根據需要個性化定制
  • 自定義導航欄在web-view頁面不會起效
  • 有嘗試把導航欄做成插件,但是遇到在插件組件中無法獲取頁面路由棧的問題,因此沒有成功

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产自产女人91一区在线观看| 日韩av网站在线| 欧洲亚洲在线视频| 日韩一区二区欧美| 亚洲福利在线播放| 久久国产精品久久久久| 精品亚洲va在线va天堂资源站| 亚洲国产古装精品网站| 国产精品女人网站| 国产精品电影久久久久电影网| 日本精品va在线观看| 日韩有码在线观看| 亚洲开心激情网| 亚洲无限av看| 中文字幕精品av| 性色av一区二区咪爱| 久久噜噜噜精品国产亚洲综合| 国产97在线观看| 日本久久久a级免费| 欧美性69xxxx肥| 91精品国产自产91精品| 亚洲欧洲在线看| 亚洲第一天堂无码专区| 亚洲有声小说3d| 国产亚洲人成网站在线观看| 日韩中文字幕精品视频| 韩国三级日本三级少妇99| 欧美精品生活片| 久热精品视频在线免费观看| 久久精品国产久精国产思思| 国产欧美在线看| 国产精自产拍久久久久久| 91av在线国产| 国产精品稀缺呦系列在线| 国产国产精品人在线视| 欧美激情第6页| 亚洲自拍偷拍视频| 国产视频亚洲精品| 亚洲激情视频在线| 亚洲精品视频免费| 不卡伊人av在线播放| 国产精品欧美日韩一区二区| 亚洲www在线观看| 成人黄色影片在线| 国产精品成人品| 亚洲国产成人精品久久久国产成人一区| 国产成人福利夜色影视| 日韩在线观看视频免费| 国产欧美中文字幕| 国产69精品久久久久99| 国产精品久久久久久久久免费| 亚洲精品日韩av| 在线免费看av不卡| 亚洲图片在线综合| 国产精品久久久久秋霞鲁丝| 亚洲xxx大片| 91超碰中文字幕久久精品| 国产精品亚洲视频在线观看| 亚洲全黄一级网站| 国产精品流白浆视频| 欧洲美女免费图片一区| 亚洲激情电影中文字幕| 欧美激情国产高清| 欧美激情精品久久久久久大尺度| 亚洲欧美一区二区激情| 成人午夜在线观看| 欧美国产精品日韩| 亚洲欧美国产另类| 日韩精品高清视频| 欧美激情综合亚洲一二区| 日韩精品极品在线观看播放免费视频| 国产成人在线亚洲欧美| 亚洲一区二区三区在线免费观看| 国产精品三级美女白浆呻吟| 成人中文字幕+乱码+中文字幕| 精品无人区乱码1区2区3区在线| 这里只有精品在线播放| 久久色精品视频| 亚洲男女自偷自拍图片另类| 国产丝袜一区二区三区| 国产美女主播一区| 久久久在线免费观看| 伊是香蕉大人久久| 欧美激情视频三区| 国产999视频| 2019最新中文字幕| 欧美性色视频在线| 国产日韩欧美在线看| 疯狂做受xxxx高潮欧美日本| 欧美日韩亚洲视频| 久久精品中文字幕一区| 红桃视频成人在线观看| 国产精品永久免费在线| 国产精品白嫩初高中害羞小美女| 国产美女高潮久久白浆| 91极品视频在线| 欧美中在线观看| 日韩中文字幕免费视频| 欧美第一淫aaasss性| 欧美性猛交xxxx| 国产欧美久久久久久| 91久久综合亚洲鲁鲁五月天| 91精品久久久久久久久久| 欧美日韩国产精品| 日韩一区在线视频| 国产伦精品免费视频| 国产+成+人+亚洲欧洲| 久久天天躁日日躁| 中文字幕在线国产精品| 欧美性xxxxxxx| 亚洲精品国产精品国自产观看浪潮| 成人黄色中文字幕| 亚洲国产精品专区久久| 亚洲国产又黄又爽女人高潮的| 国产精品草莓在线免费观看| 98精品国产高清在线xxxx天堂| 亚洲女人被黑人巨大进入al| 日韩免费在线视频| 国产69久久精品成人| 亚洲第一区第二区| 精品中文字幕视频| 国产精品成人一区二区三区吃奶| 色黄久久久久久| 亚洲白拍色综合图区| 97视频在线看| 亚洲精品网站在线播放gif| 17婷婷久久www| 久久久av免费| 免费不卡欧美自拍视频| 欧美日韩福利在线观看| 国产剧情日韩欧美| 蜜月aⅴ免费一区二区三区| 国产亚洲一区精品| 国产在线播放91| 国产欧美日韩精品专区| 国产精品自产拍在线观看| 免费不卡在线观看av| 亚洲欧美在线播放| 日韩欧美亚洲一二三区| 日韩免费av片在线观看| 亚洲v日韩v综合v精品v| 国产一区二区三区在线观看视频| 91香蕉亚洲精品| 亚洲精品videossex少妇| 国产精品wwww| 国产91精品网站| 蜜臀久久99精品久久久无需会员| 亚洲欧美福利视频| 亚洲精品成人久久久| 久久亚洲精品国产亚洲老地址| 亲子乱一区二区三区电影| 欧美国产日韩二区| 正在播放亚洲1区| 免费97视频在线精品国自产拍| 欧美日本高清视频| 色婷婷亚洲mv天堂mv在影片| 亚洲天堂av在线免费| 国产在线播放91| 91精品国产成人| 久久97精品久久久久久久不卡| 日韩精品丝袜在线| 午夜免费久久久久| 久久影院资源站| 久久精品91久久香蕉加勒比|