最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序自定義導(dǎo)航教程(兼容各種手機(jī))

 更新時間:2018年12月12日 08:58:01   作者:面包大蝦  
這篇文章主要給大家介紹了關(guān)于微信小程序自定義導(dǎo)航的相關(guān)內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),兼容各種手機(jī),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

了解小程序默認(rèn)導(dǎo)航


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

所以我們要實現(xiàn)一個兼容不同手機(jī)的導(dǎo)航必須要根據(jù)不同的手機(jī)實現(xiàn)statusBarHeight和titleBarHeight

第一步:全局設(shè)置

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

設(shè)置完之后發(fā)現(xiàn)導(dǎo)航欄變成了如下圖所示,只剩下了右上角膠囊按鈕

第二步:確定導(dǎo)航欄兩部分的高度

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

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

(2)第二部分titleBarHeight為小程序?qū)Ш綑诘母叨?,?jīng)過我查詢無數(shù)文檔和實踐得知,在iPhone上titleBarHeight=44px,在安卓上titleBarHeight = 48px

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

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: {
 //小程序頁面的標(biāo)題
 title: {
  type: String,
  default: '默認(rèn)標(biāo)題'
 },
 //是否展示返回和主頁按鈕
 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展示效果

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

解決下拉刷新的問題


圖一為默認(rèn)導(dǎo)航下的下拉刷新,顯示正常,圖二為自定義導(dǎo)航欄下的下拉刷新,顯示異常,中間有一大塊空白。

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

(1)把app.json中的window設(shè)置為如下,這樣加載動畫就隱藏了,因為加載動畫必須要設(shè)置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上是能正常展示的,但是在安卓上還有一點小問題,自定義導(dǎo)航欄的標(biāo)題和圖標(biāo)有一起滑動

注意點

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

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

目前哪些小程序在用自定義導(dǎo)航欄

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • JS樣式獲取的封裝方法實例詳解

    JS樣式獲取的封裝方法實例詳解

    這篇文章主要介紹了JS樣式獲取的封裝方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 詳談js遍歷集合(Array,Map,Set)

    詳談js遍歷集合(Array,Map,Set)

    下面小編就為大家?guī)硪黄斦刯s遍歷集合(Array,Map,Set)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • JavaScript Event Loop相關(guān)原理解析

    JavaScript Event Loop相關(guān)原理解析

    這篇文章主要介紹了JavaScript Event Loop相關(guān)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 值得分享的最全面Bootstrap快速人門案例

    值得分享的最全面Bootstrap快速人門案例

    這篇文章主要為大家詳細(xì)介紹了最全面的前端插件Bootstrap快速人門案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript實現(xiàn)多文件下載方法解析

    JavaScript實現(xiàn)多文件下載方法解析

    這篇文章主要介紹了JavaScript實現(xiàn)多文件下載方法解析,文章通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • js實現(xiàn)炫酷光感效果

    js實現(xiàn)炫酷光感效果

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)炫酷光感效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 用javascript父窗口控制只彈出一個子窗口

    用javascript父窗口控制只彈出一個子窗口

    用javascript父窗口控制只彈出一個子窗口...
    2007-04-04
  • JS觸摸事件、手勢事件詳解

    JS觸摸事件、手勢事件詳解

    本篇文章主要介紹了JS觸摸事件、手勢事件詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • JavaScript實現(xiàn)的雙向跨域插件分享

    JavaScript實現(xiàn)的雙向跨域插件分享

    這篇文章主要介紹了JavaScript實現(xiàn)的雙向跨域插件分享,本文實現(xiàn)把整個跨域過程抽象出來,封裝成一個JavaScript插件,需要的朋友可以參考下
    2015-01-01
  • js實現(xiàn)點擊圖片自動提交action的簡單方法

    js實現(xiàn)點擊圖片自動提交action的簡單方法

    下面小編就為大家?guī)硪黄猨s實現(xiàn)點擊圖片自動提交action的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論

称多县| 称多县| 南岸区| 东乌珠穆沁旗| 峡江县| 璧山县| 湘潭市| 莱州市| 丹阳市| 阳西县| 三台县| 武邑县| 湟中县| 缙云县| 宁武县| 三门县| 卢氏县| 自贡市| 信宜市| 霍林郭勒市| 桦川县| 大余县| 招远市| 京山县| 安顺市| 二连浩特市| 措勤县| 东明县| 文成县| 勐海县| 大荔县| 林甸县| 洛川县| 尼玛县| 绍兴县| 鹤庆县| 眉山市| 杭州市| 徐闻县| 新巴尔虎右旗| 南宁市|