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

首頁 > 編程 > JavaScript > 正文

微信小程序自定義導航教程(兼容各種手機)

2019-11-19 12:21:16
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于微信小程序自定義導航的相關內容,詳細代碼請見github,請點擊地址 (本地下載),其中有原生小程序的實現,也有wepy版本的實現

了解小程序默認導航


如上圖所示,微信導航分為兩部分,第一個部分為statusBarHeight,劉海屏手機(iPhone X,小米8等)會比其他的手機高很多,第二部分為titleBarHeight,安卓和IOS的高度不同,但是IOS高度是一樣的,IOS高度是一樣的,

所以我們要實現一個兼容不同手機的導航必須要根據不同的手機實現statusBarHeight和titleBarHeight

第一步:全局設置

把app.json中的window中的navigationStyle設置為custom,官方文檔鏈接

設置完之后發現導航欄變成了如下圖所示,只剩下了右上角膠囊按鈕

第二步:確定導航欄兩部分的高度

(1)確定第一部分statusBarHeight的高度,這部分是手機用來展示時間,信號和手機電量的,我們可以從wx.getSystemInfo從獲得

wx.getSystemInfo({ success: function(res) { console.log(res.statusBarHeight) }})

(2)第二部分titleBarHeight為小程序導航欄的高度,經過我查詢無數文檔和實踐得知,在iPhone上titleBarHeight=44px,在安卓上titleBarHeight = 48px

(3)最后總結一下微信小程序的高度代碼為

wx.getSystemInfo({ success: function(res) { let titleBarHeight = 0 if (res.model.indexOf('iPhone') !== -1) {  titleBarHeight = 44 } else {  titleBarHeight = 48 } that.setData({  statusBarHeight: res.statusBarHeight,  titleBarHeight: titleBarHeight }); }, failure() { that.setData({  statusBarHeight: 0,  titleBarHeight: 0 }); }})

第三步:編寫Navigation組件

(1)Navigation.js

const app = getApp();Component({ properties: { //小程序頁面的標題 title: {  type: String,  default: '默認標題' }, //是否展示返回和主頁按鈕 showIcon: {  type: Boolean,  default: true } }, data: { statusBarHeight: 0, titleBarHeight: 0, }, ready: function () { // 因為每個頁面都需要用到這連個字段,所以放到全局對象中 if (app.globalData && app.globalData.statusBarHeight && app.globalData.titleBarHeight) {  this.setData({  statusBarHeight: app.globalData.statusBarHeight,  titleBarHeight: app.globalData.titleBarHeight  }); } else {  let that = this  wx.getSystemInfo({  success: function(res) {   if (!app.globalData) {   app.globalData = {}   }   if (res.model.indexOf('iPhone') !== -1) {   app.globalData.titleBarHeight = 44   } else {   app.globalData.titleBarHeight = 48   }   app.globalData.statusBarHeight = res.statusBarHeight   that.setData({   statusBarHeight: app.globalData.statusBarHeight,   titleBarHeight: app.globalData.titleBarHeight   });  },  failure() {   that.setData({   statusBarHeight: 0,   titleBarHeight: 0   });  }  }) } }, methods: { headerBack() {  wx.navigateBack({  delta: 1,  fail(e) {   wx.switchTab({   url: '/pages/main/main'   })  }  }) }, headerHome() {  wx.switchTab({  url: '/pages/main/main'  }) } }})

(2) Navigation.wxml

<view style="height:{{titleBarHeight}}px;padding-top:{{statusBarHeight}}px"> <view class="header" style="height:{{titleBarHeight}}px;padding-top:{{statusBarHeight}}px"> <view wx:if="{{showIcon}}" class="title-bar">  <view class="back" bindtap="headerBack"><image src="https://dn-testimage.qbox.me/Files/08/6b/086b8e19c7a5aa031dc4df31ca8b53ac2ed32212_644.png"></image></view>  <view class="line"></view>  <view class="home" bindtap="headerHome"><image src="https://dn-testimage.qbox.me/Files/fc/49/fc4958729bf1937667b68c78f495edeafe30f339_1030.png"></image></view> </view> <view class="header-title">{{title}}</view> </view></view>

css就不貼了,有點多,需要的朋友可以去的github上拿 點擊地址本地下載

第四步:展示效果

iPhone X展示效果

iPhone 7展示效果

小米8展示效果

用我們公司的測試機基本上都試了一遍,基本上都能正常顯示,別問我為什么樣式和右邊這么相似,因為我是叫公司設計給了我樣式

解決下拉刷新的問題


圖一為默認導航下的下拉刷新,顯示正常,圖二為自定義導航欄下的下拉刷新,顯示異常,中間有一大塊空白。

如果解決這個問題,我們自定義一個加載動畫,藏在導航底下

(1)把app.json中的window設置為如下,這樣加載動畫就隱藏了,因為加載動畫必須要設置window的backgroundTextStyle=blackbackgroundColor=#F3F3F3才會顯示如上圖所示

window: { "navigationStyle": "custom", "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "ICY買手店", "navigationBarTextStyle": "black"}

(2)修改Navigation.wxml

<view style="height:{{titleBarHeight}}px;padding-top:{{statusBarHeight}}px"> <view class="header" style="height:{{titleBarHeight}}px;padding-top:{{statusBarHeight}}px"> <view wx:if="{{showIcon}}" class="title-bar">  <view class="back" bindtap="headerBack"><image src="https://dn-testimage.qbox.me/Files/08/6b/086b8e19c7a5aa031dc4df31ca8b53ac2ed32212_644.png"></image></view>  <view class="line"></view>  <view class="home" bindtap="headerHome"><image src="https://dn-testimage.qbox.me/Files/fc/49/fc4958729bf1937667b68c78f495edeafe30f339_1030.png"></image></view> </view> <view class="header-title">{{title}}</view> </view> <view class="loading-wrap"><image class="loading-gif" src="https://dn-testimage.qbox.me/Files/e0/35/e03562502eae6d5944bed747b7c21a3c2cce1ff8_1250.gif"></image></view></view>

效果如下圖,加載動畫我可能寫的不太好看

問題:這樣做在iPhone上是能正常展示的,但是在安卓上還有一點小問題,自定義導航欄的標題和圖標有一起滑動

注意點

(1)安卓手機下拉刷新還是會有一點點展示問題

(2)項目所有fixed的元素都需要改,top需要加上導航欄的高度

目前哪些小程序在用自定義導航欄

我所知道的有 “bilibili”,"票圈長視頻",我們公司的小程序也在計劃用

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一区二区三区高清视频| 欧美丰满片xxx777| 国产在线精品自拍| xvideos成人免费中文版| 欧美日韩999| 欧美一区二区三区图| 91精品国产综合久久久久久久久| 欧美床上激情在线观看| 免费不卡欧美自拍视频| 欧美最猛性xxxxx免费| 国内伊人久久久久久网站视频| 91亚洲国产精品| 色爱av美腿丝袜综合粉嫩av| 一本一道久久a久久精品逆3p| 欧洲永久精品大片ww免费漫画| 久久免费视频网站| 亚洲电影第1页| 88国产精品欧美一区二区三区| 92福利视频午夜1000合集在线观看| 欧美做受高潮电影o| 国产视频精品va久久久久久| 欧美专区在线视频| 亚洲精品自拍第一页| 懂色av一区二区三区| 日韩一区二区av| 中文综合在线观看| 亚洲一级片在线看| 亚洲春色另类小说| 一区二区三区四区视频| 国产欧美日韩精品在线观看| 成人av番号网| 日日骚av一区| 日韩人在线观看| 91色精品视频在线| 国产成人高清激情视频在线观看| 国产精品亚洲美女av网站| 精品国产乱码久久久久酒店| 久久久久国产视频| 精品中文视频在线| 欧美日韩亚洲视频一区| 亚洲一区二区久久久久久| 亚洲欧美日韩第一区| 国产精品流白浆视频| 国产精品免费久久久久久| 中文字幕av一区中文字幕天堂| 懂色aⅴ精品一区二区三区蜜月| 精品久久久久久久久久久久久| 亚洲专区在线视频| 精品一区二区三区四区| 亚洲伊人久久大香线蕉av| 日韩欧美国产视频| 97热在线精品视频在线观看| 日韩精品免费观看| 国产精品极品尤物在线观看| 这里只有精品在线播放| 欧美在线一区二区三区四| 精品国产自在精品国产浪潮| 国产偷国产偷亚洲清高网站| 亚洲已满18点击进入在线看片| 狠狠躁夜夜躁久久躁别揉| 综合国产在线观看| 日本一区二区在线播放| 日韩电影视频免费| 日韩精品免费在线视频观看| 在线国产精品视频| 欧美亚洲另类制服自拍| 亚洲第一区第二区| 国产免费一区二区三区在线观看| 亚洲欧美国产高清va在线播| 91亚洲精品久久久久久久久久久久| 国产亚洲欧美日韩一区二区| 91精品中文在线| 亚洲激情电影中文字幕| 欧美激情视频免费观看| 国产精品香蕉在线观看| 亚洲人成自拍网站| 国产亚洲精品久久久久久| 欧美性在线视频| 欧美日韩国产精品一区| 国产午夜精品视频免费不卡69堂| 国产精品自产拍在线观看中文| 国产精品一区二区三区毛片淫片| 日本亚洲欧洲色α| 亚洲最大福利视频网| 欧洲午夜精品久久久| 欧美高跟鞋交xxxxxhd| 亚洲男人天堂九九视频| 日韩精品在线视频美女| 日本亚洲欧美三级| 欧美午夜精品伦理| 中文字幕久热精品在线视频| 国产欧美日韩中文| 国产欧美日韩中文字幕| 国产精品欧美激情在线播放| 中文字幕亚洲无线码a| 国产69精品久久久久久| 国产成人精品久久二区二区| 国产精欧美一区二区三区| 日韩免费观看网站| 亚洲欧洲高清在线| 91热精品视频| 91精品久久久久久久久久| 国产精品直播网红| 欧美性色xo影院| 午夜精品三级视频福利| 亚洲精品美女免费| 国产精品久久久久久久久久久久久| 精品在线欧美视频| 午夜精品一区二区三区在线视| 日韩av片永久免费网站| 亚洲国产欧美一区二区丝袜黑人| 日韩经典中文字幕| 尤物99国产成人精品视频| 久久99久国产精品黄毛片入口| 日韩精品在线观| 精品久久久久久久久久国产| 欧美日韩成人免费| 亚洲欧美日韩在线一区| 久久久999精品视频| 97精品伊人久久久大香线蕉| 5566成人精品视频免费| 欧美高清视频免费观看| 欧洲成人在线视频| 国产69精品99久久久久久宅男| 欧美一级片一区| 国产乱肥老妇国产一区二| 欧美性高跟鞋xxxxhd| 日韩欧美a级成人黄色| 国产婷婷成人久久av免费高清| 亚洲欧美www| 91av视频在线免费观看| 国产午夜精品美女视频明星a级| 亚洲va欧美va国产综合剧情| 欧美一区二三区| 91免费看国产| 欧美激情视频在线免费观看 欧美视频免费一| 久久成人精品一区二区三区| 国产视频一区在线| 久久精品91久久香蕉加勒比| 日韩av免费网站| 久久成人精品一区二区三区| 久久久久久国产精品美女| 国产亚洲人成网站在线观看| 日韩成人在线视频网站| 成人久久精品视频| 国产色婷婷国产综合在线理论片a| 欧美成人精品不卡视频在线观看| 日韩av观看网址| 日韩欧美亚洲综合| 国产视频观看一区| 91精品国产高清久久久久久91| 成人国产精品一区| 国产亚洲激情视频在线| 在线观看久久av| 色妞一区二区三区| 久久久久久综合网天天| 日本亚洲欧洲色α| 91国内免费在线视频| 91亚洲国产精品| 亚洲人a成www在线影院| 在线日韩精品视频| 成人性教育视频在线观看| 成人精品一区二区三区电影免费| 国产亚洲欧美日韩一区二区|