<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 21:55:04
        文檔

        詳解微信小程序膠囊按鈕返回|首頁自定義導航欄功能

        詳解微信小程序膠囊按鈕返回|首頁自定義導航欄功能:項目代碼:https://github.com/Shay0921/header-navbar.git 在小程序中,從轉發出來的小程序消息卡片進入,因為頁面棧中只有一個,所以不會出現返回按鈕,對于一些電商平臺來說,當商品被轉發后會很影響客戶查看其它產品和首頁,這時候就需要使用自定義導航欄
        推薦度:
        導讀詳解微信小程序膠囊按鈕返回|首頁自定義導航欄功能:項目代碼:https://github.com/Shay0921/header-navbar.git 在小程序中,從轉發出來的小程序消息卡片進入,因為頁面棧中只有一個,所以不會出現返回按鈕,對于一些電商平臺來說,當商品被轉發后會很影響客戶查看其它產品和首頁,這時候就需要使用自定義導航欄

        現膠囊上邊距 = 膠囊上邊界坐標 - 狀態欄高度

        現膠囊右邊距 = 屏幕寬度 - 膠囊右邊界坐標

        現膠囊下邊距 = 膠囊下邊界坐標 - 膠囊高度 - 狀態欄高度

        導航欄高度 = 膠囊下邊界坐標 + 現膠囊下邊距

        注意:膠囊下邊界坐標包含了 狀態欄、膠囊高度和狀態欄和膠囊高度之間的距離,因為膠囊是居中在導航欄里的 ,所以上邊距與下邊距應該一致,所以是 膠囊下邊界坐標 - 膠囊高度 - 狀態欄高度。

        const app = getApp();
        Component({
         properties: {
         navbarData: { // 由父頁面傳遞的數據
         type: Object,
         value: {},
         observer: function (newVal, oldVal) { }
         }
         },
         data: {
         haveBack: true, // 是否有返回按鈕,true 有 false 沒有 若從分享頁進入則為 false
         statusBarHeight: 0, // 狀態欄高度
         navbarHeight: 0, // 頂部導航欄高度
         navbarBtn: { // 膠囊位置信息
         height: 0,
         width: 0,
         top: 0,
         bottom: 0,
         right: 0
         }
         },
         // 微信7.0.0支持wx.getMenuButtonBoundingClientRect()獲得膠囊按鈕高度
         attached: function () {
         let statusBarHeight = app.globalData.systeminfo.statusBarHeight // 狀態欄高度
         let headerPosi = app.globalData.headerBtnPosi // 膠囊位置信息
         /**
         * wx.getMenuButtonBoundingClientRect() 坐標信息以屏幕左上角為原點
         * 菜單按鍵寬度: 87
         * 菜單按鍵高度: 32
         * 菜單按鍵左邊界坐標: 278
         * 菜單按鍵上邊界坐標: 26
         * 菜單按鍵右邊界坐標: 365
         * 菜單按鍵下邊界坐標: 58
         */
         let btnPosi = { // 膠囊實際位置,坐標信息不是左上角原點
         height: headerPosi.height,
         width: headerPosi.width,
         // 膠囊top - 狀態欄高度
         top: headerPosi.top - statusBarHeight,
         // 膠囊bottom - 膠囊height - 狀態欄height (現膠囊bottom 為距離導航欄底部的長度)
         bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
         // 屏幕寬度 - 膠囊right
         right: app.globalData.systeminfo.screenWidth - headerPosi.right
         }
         let haveBack;
         if (getCurrentPages().length === 1) { // 當只有一個頁面時
         haveBack = false;
         } else {
         haveBack = true;
         }
         this.setData({
         haveBack: haveBack, // 獲取是否是通過分享進入的小程序
         statusBarHeight: statusBarHeight,
         navbarHeight: headerPosi.bottom + btnPosi.bottom, // 原膠囊bottom + 現膠囊bottom
         navbarBtn: btnPosi
         })
         },
         methods: {
         _goBack: function () {
         wx.navigateBack({
         delta: 1
         });
         },
         _goHome: function () {
         wx.switchTab({
         url: '/pages/index/index',
         });
         }
         }
        })

        通過 getCurrentPages() 來判斷當前頁面是否從分享頁進入, 因為如果從分享頁進入頁面棧中應該只有一條數據,在跳轉到其他頁面時頁面棧的length則會增加 ,在其他頁面就會顯示出返回和首頁按鈕。

        注意:微信7.0.0支持wx.getMenuButtonBoundingClientRect(),如果想兼容低版本的微信,只能把導航欄的高度寫死,通過一些大佬的計算得出的高度:

        'iPhone': 64,

        'iPhone X': 88,

        'android': 68

        具體查看:

        https://developers.weixin.qq.com/community/develop/doc/0006c012dc8028f04b070dd0551004

        如果你使用 wx.getMenuButtonBoundingClientRect()得到信息有小數 ,如下所示

        {height: 24, width: 65.25, top: -0.5, bottom: -0.5, right: 101.25}

        那么你可能是把開發工具中的視圖縮放了,還原成100%就正常了。

         

        headerNavbar.wxss

        .navbar-wrap {
         position: fixed;
         width: 100%;
         top: 0;
         z-index: 9999999;
         background-color: #3281FF;
         box-sizing: border-box;
        }
        .navbar-text {
         text-align: center;
         font-size: 36rpx;
         color: #fff;
         font-weight: 600;
        }
        .navbar-icon {
         position: fixed;
         display: flex;
         border-radius: 64rpx;
         border: 0.5px solid rgba(255,255,255, 0.3);
         box-sizing: border-box;
        }
        .navbar-icon image {
         height: 20px;
         width: 20px;
         padding: 5px 10px 10px;
         display: inline-block;
         overflow: hidden;
        }
        .navbar-icon view {
         height: 18px;
         border-left: 0.5px solid rgba(255,255,255, 0.3);
         margin-top: 6px;
        }
        .navbar-loading {
         background: #fff;
         text-align: center;
        }
        
        

        引用組件頁面代碼

        navigationStyle.json

        {
         "navigationStyle": "custom", 
         "enablePullDownRefresh": true, 
         "backgroundTextStyle": "light", 
         "usingComponents": {
         "headerNavbar": "/components/headerNavbar/headerNavbar"
         }
        }

        先在需要使用自定義導航欄的頁面json中添加navigationStyle:custom

        enablePullDownRefresh: true 開啟下拉刷新

        backgroundTextStyle: light是把loading的樣式改成白色,這樣就不會顯示出來loading的三個點

        navigationStyle.wxml

        <headernavbar navbar-data="{{nvabarData}}"></headernavbar> 
        <view class="home-page"> 
         <text>
         上面是自定義導航欄↑↑↑
         </text> 
         <text>
         下面是主體內容↓↓↓
         </text> 
         <navigator url="./testPage">
         跳轉到測試頁
         </navigator> 
        </view>

        navigationStyle.js

        Page({
         data: {
         // 組件所需的參數
         nvabarData: {
         showCapsule: 1,
         // 是否顯示左上角膠囊按鈕 1 顯示 0 不顯示
         title: '組件列表' // 導航欄 中間的標題
         }
         },
         onPullDownRefresh() {
         setTimeout(() = >{
         wx.stopPullDownRefresh(); // 停止下拉
         },
         2000);
         },
        })

        注意:雖說這么做在小程序開發工具中看起來都是對的,得到的導航欄高度也是64px但是在真機上測試后,還是有偏差,在iphone8 plus上高度是60px。

        可以通過這張圖明顯看到差了幾px,如果你是單獨幾個頁面使用自定義導航,細心的用戶可能會發現,但是基本不影響。如果是全局使用自定義導航,那就不存在這個問題了。

        項目代碼:https://github.com/Shay0921/header-navbar.git

        總結

        以上所述是小編給大家介紹的詳解微信小程序膠囊按鈕返回|首頁自定義導航欄功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

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

        文檔

        詳解微信小程序膠囊按鈕返回|首頁自定義導航欄功能

        詳解微信小程序膠囊按鈕返回|首頁自定義導航欄功能:項目代碼:https://github.com/Shay0921/header-navbar.git 在小程序中,從轉發出來的小程序消息卡片進入,因為頁面棧中只有一個,所以不會出現返回按鈕,對于一些電商平臺來說,當商品被轉發后會很影響客戶查看其它產品和首頁,這時候就需要使用自定義導航欄
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 一级毛片aa高清免费观看| 亚洲AV成人精品一区二区三区| 好湿好大好紧好爽免费视频| 国产免费爽爽视频免费可以看| 亚洲字幕AV一区二区三区四区| 99久久国产热无码精品免费| 亚洲国产成人手机在线电影bd | 亚洲国产精品免费视频| 久久久久久亚洲精品中文字幕| 国产成人久久AV免费| 亚洲天堂视频在线观看| 1000部拍拍拍18免费网站| 亚洲福利一区二区精品秒拍| 免费不卡视频一卡二卡| 亚洲国产区男人本色在线观看| 在线免费观看中文字幕| 麻豆安全免费网址入口| 亚洲日韩精品A∨片无码| 久久国产精品免费专区| 亚洲国产精品久久网午夜| 丁香花免费完整高清观看| 在线播放免费播放av片| eeuss在线兵区免费观看| 亚洲av无码一区二区三区网站| 亚洲精品视频免费看| 亚洲熟妇无码八V在线播放| 免费a级毛片18以上观看精品| 成全视成人免费观看在线看| 亚洲成AV人综合在线观看| 性做久久久久免费看| 91成人免费观看在线观看| 亚洲第一成年人网站| 国产成人免费ā片在线观看| 两个人看的www免费高清 | 亚洲成av人片天堂网| 91成年人免费视频| 免费人成网上在线观看| 18gay台湾男同亚洲男同| 免费乱理伦在线播放| 在线免费观看亚洲| 黄色网址在线免费观看|