<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
        主站蜘蛛池模板: 亚洲丰满熟女一区二区哦| 日韩电影免费在线观看网址 | 亚洲午夜国产精品无卡| 亚洲一区二区三区无码国产| 春暖花开亚洲性无区一区二区| 成人毛片免费观看视频大全| 国产专区一va亚洲v天堂| 四虎成人免费网站在线| 久久久无码精品亚洲日韩蜜桃 | 日韩一区二区免费视频| 精品久久久久亚洲| 国产精品高清全国免费观看| 亚洲av无码偷拍在线观看| av无码东京热亚洲男人的天堂| 亚洲精品人成在线观看| 日韩色日韩视频亚洲网站| 国产男女猛烈无遮挡免费视频网站 | 国产成人免费福利网站| 特黄特色大片免费| 毛片a级三毛片免费播放| 亚洲欧美中文日韩视频| 亚洲高清视频一视频二视频三| 好男人资源在线WWW免费| 亚洲AV无码日韩AV无码导航| 久99久精品免费视频热77| 一区国严二区亚洲三区| A级毛片成人网站免费看| 亚洲精品无码你懂的网站| 中文字幕在线观看免费| 亚洲综合久久1区2区3区| 四虎成人精品永久免费AV| 亚洲国产精品专区| 国产18禁黄网站免费观看| 亚洲精品无码久久久久久久| 影音先锋在线免费观看| 在线免费视频你懂的| 亚洲精品偷拍无码不卡av| 亚洲AⅤ视频一区二区三区| 国色精品va在线观看免费视频| 亚洲午夜福利精品久久| 日韩在线视频播放免费视频完整版|