<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:02:44
        文檔

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

        微信小程序自定義導航教程(兼容各種手機):前言 本文主要給大家介紹了關于微信小程序自定義導航的相關內容,詳細代碼請見github,請點擊地址 (本地下載),其中有原生小程序的實現,也有wepy版本的實現 了解小程序默認導航 如上圖所示,微信導航分為兩部分,第一個部分為statusBarHeigh
        推薦度:
        導讀微信小程序自定義導航教程(兼容各種手機):前言 本文主要給大家介紹了關于微信小程序自定義導航的相關內容,詳細代碼請見github,請點擊地址 (本地下載),其中有原生小程序的實現,也有wepy版本的實現 了解小程序默認導航 如上圖所示,微信導航分為兩部分,第一個部分為statusBarHeigh

        前言

        本文主要給大家介紹了關于微信小程序自定義導航的相關內容,詳細代碼請見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”,"票圈長視頻",我們公司的小程序也在計劃用

        總結

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        微信小程序自定義導航教程(兼容各種手機):前言 本文主要給大家介紹了關于微信小程序自定義導航的相關內容,詳細代碼請見github,請點擊地址 (本地下載),其中有原生小程序的實現,也有wepy版本的實現 了解小程序默認導航 如上圖所示,微信導航分為兩部分,第一個部分為statusBarHeigh
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产成人麻豆亚洲综合无码精品| 91精品国产免费久久国语蜜臀 | 国产一级a毛一级a看免费视频| 毛片免费观看视频| 亚洲综合区图片小说区| 午夜理伦剧场免费| 久久久青草青青亚洲国产免观| 一级A毛片免费观看久久精品| 免费看男女下面日出水视频| 国产成人高清亚洲一区91| 国产美女无遮挡免费视频网站| 亚洲人成网站18禁止| 麻豆国产精品入口免费观看| 亚洲AV无码无限在线观看不卡| 狠狠久久永久免费观看| 亚洲国产精品无码中文lv| 四虎永久在线精品免费观看地址| 小说区亚洲自拍另类| 亚洲国产一区二区视频网站| 免费VA在线观看无码| 亚洲一区无码中文字幕| 99爱免费观看视频在线| 亚洲最大免费视频网| 国产免费av片在线看| 亚洲国产成人久久精品软件| 高清在线亚洲精品国产二区| 最新亚洲成av人免费看| 亚洲视频手机在线| 女人18一级毛片免费观看| 国产成人亚洲毛片| 亚洲午夜久久久久妓女影院 | 亚洲国产精品免费视频| 亚洲一级片在线播放| 国产成人综合久久精品免费| 欧洲美女大片免费播放器视频| 亚洲日韩中文无码久久| A在线观看免费网站大全| 另类专区另类专区亚洲| 亚洲成a人片在线观看日本| 无码区日韩特区永久免费系列| 久久久久亚洲国产AV麻豆|