<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:00:07
        文檔

        小程序自定義單頁面、全局導航欄的實現代碼

        小程序自定義單頁面、全局導航欄的實現代碼:需求 產品說小程序返回到首頁不太方便,想添加返回首頁按鈕,UI說導航欄能不能設置背景圖片,因為那樣設計挺好看的。 需求分析并制定方案 這產品和UI都提需求了,咱也不能反駁哈,所以開始調研,分析可行性方案;1、可以添加懸浮按鈕。2、自定義導航欄。 添
        推薦度:
        導讀小程序自定義單頁面、全局導航欄的實現代碼:需求 產品說小程序返回到首頁不太方便,想添加返回首頁按鈕,UI說導航欄能不能設置背景圖片,因為那樣設計挺好看的。 需求分析并制定方案 這產品和UI都提需求了,咱也不能反駁哈,所以開始調研,分析可行性方案;1、可以添加懸浮按鈕。2、自定義導航欄。 添

        二、實現的步驟

        以下說下幾個要點:

        1、自定義導航欄文本,是否顯示返回,是否顯示返回首頁,導航欄高度

        2、statusBarHeight,用來獲取手機狀態欄的高度,這個需要在全局app.js中的onLaunch,調用wx.getSystemInfo獲取,navigationBarHeight+默認的高度,這個是設定整個導航欄的高度,

        3、還有注意的,在寫樣式距離和大小時建議都用px,因小程序右邊的膠囊也是用的px,不是rpx。

        4、因為自定義導航欄每個頁面都要寫,所以把導航欄封裝了公共組件,這樣只需要在每個頁面引入即可。

        如下是封裝的導航欄組件:

        wxml

        <view class="navbar" style="{{'height: ' + navigationBarHeight}}">
         <view style="{{'height: ' + statusBarHeight}}"></view>
         <view class='title-container'>
         <view class='capsule' wx:if="{{ back || home }}">
         <view bindtap='back' wx:if="{{back}}">
         <image src='/images/back.png'></image> 
         </view>
         <view bindtap='backHome' wx:if="{{home}}">
         <image src='/images/home.png'></image>
         </view>
         </view>
         <view class='title'>{{text}}</view>
         </view>
        </view>
        <view style="{{'height: ' + navigationBarHeight}};background: white;"></view>
        這里有個需注意的問題,就是一般會出現自定義導航欄,下拉頁面,導航欄也隨著會下拉,這種問題是因為設置fixed后頁面元素整體上移了navigationBarHeight,所以在此組件里設置一個空白view元素占用最上面的navigationBarHeight這塊高度

        wxss

        .navbar {
         width: 100%;
         background-color: #1797eb;
         position: fixed;
         top: 0;
         left: 0;
         z-index: 999;
        }
        .title-container {
         height: 40px;
         display: flex;
         align-items: center;
         position: relative;
        }
        .capsule {
         margin-left: 10px;
         height: 30px;
         background: rgba(255, 255, 255, 0.6);
         border: 1px solid #fff;
         border-radius: 16px;
         display: flex;
         align-items: center;
        }
        .capsule > view {
         width: 45px;
         height: 60%;
         position: relative;
        .capsule > view:nth-child(2) {
         border-left: 1px solid #fff; 
        }
        .capsule image {
         width: 50%;
         height: 100%;
         position: absolute;
         left: 50%;
         top: 50%;
         transform: translate(-50%,-50%);
        }
        .title {
         color: white;
         position: absolute;
         top: 6px;
         left: 104px;
         right: 104px;
         height: 30px;
         line-height: 30px;
         font-size: 14px;
         text-align: center;
         overflow: hidden;
         text-overflow: ellipsis;
         white-space: nowrap;
        }

        js

        const app = getApp()
        
        Component({
        
         properties: {
         text: {
         type: String,
         value: 'Wechat'
         },
         back: {
         type: Boolean,
         value: false
         },
         home: {
         type: Boolean,
         value: false
         }
         },
         data: {
         statusBarHeight: app.globalData.statusBarHeight + 'px',
         navigationBarHeight: (app.globalData.statusBarHeight + 44) + 'px'
         },
        
         methods: {
         backHome: function () {
         let pages = getCurrentPages()
         wx.navigateBack({
         delta: pages.length
         })
         },
         back: function () {
         wx.navigateBack({
         delta: 1
         })
         }
         }
        })

        json

        {
         "component": true,
         "usingComponents": {}
        }
        
        最終還需要考慮下版本兼容的問題,畢竟還有一些用戶,微信版本并沒有更新到最新版本。

        首先可以在app.js里面獲取下當前用戶的微信版本,做下版本比較,如果小于這個版本,設置個全局變量,也可以在組件寫個方法,在不同的頁面打開顯示不同的頂部導航欄,或者可以控制是否顯示導航欄,這里就不詳細說了。

        親自試了下,在低于7.0版本的微信中,如果采用單頁面自定義導航欄,會出現兩個導航欄,這時候通過判斷版本號不要再渲染自定義的導航欄組件了,在頁面的配置文件里寫上title名,還有相應的背景色,這樣就會顯示自帶的導航欄了。

        總結

        小程序開發是有些坑的地方,從不支持自定義導航欄,到支持全局自定義導航欄,再到現在的支持單頁面配置,可以看出在慢慢完善。還有底部tabbar,可自己選擇配置的太少了,雖然也支持自定義,但是發現自定義寫的底部導航組件體驗并不好,每次打開頁面都會重新渲染底部的按鈕,如果全部寫成在一個頁面里的tab切換,雖然按鈕每次不用重新加載了,但是業務多肯定不行,寫到一個單頁面里東西也太多了。 希望微信能夠多添加或放開一些功能,讓開發者更好的服務于產品,給用戶更好的體驗。

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

        文檔

        小程序自定義單頁面、全局導航欄的實現代碼

        小程序自定義單頁面、全局導航欄的實現代碼:需求 產品說小程序返回到首頁不太方便,想添加返回首頁按鈕,UI說導航欄能不能設置背景圖片,因為那樣設計挺好看的。 需求分析并制定方案 這產品和UI都提需求了,咱也不能反駁哈,所以開始調研,分析可行性方案;1、可以添加懸浮按鈕。2、自定義導航欄。 添
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲中文字幕无码久久| 国产成人精品亚洲2020| 深夜免费在线视频| 成人亚洲网站www在线观看| 日韩色视频一区二区三区亚洲| 国外成人免费高清激情视频| 亚洲性色AV日韩在线观看| 成人啪精品视频免费网站| 亚洲爆乳无码专区www| 又粗又大又猛又爽免费视频| 黄色a三级三级三级免费看| 亚洲女人被黑人巨大进入| 中国videos性高清免费| 久久亚洲精品成人777大小说| 99在线观看免费视频| 亚洲国产激情在线一区| 国产高清在线免费视频| 一级一片免费视频播放| 亚洲产国偷V产偷V自拍色戒| 最近免费中文字幕mv电影| 久久精品国产亚洲AV蜜臀色欲| 男女啪啪永久免费观看网站| 日本激情猛烈在线看免费观看| 久久久久久a亚洲欧洲aⅴ| 免费精品国产自产拍在线观看图片| 亚洲videos| 亚洲性日韩精品国产一区二区| 精品国产污污免费网站| 在线综合亚洲欧洲综合网站| 男人的天堂亚洲一区二区三区 | 白白色免费在线视频| 久久久久噜噜噜亚洲熟女综合 | 国产精品免费一区二区三区| 亚洲午夜免费视频| 女人张腿给男人桶视频免费版| 二级毛片免费观看全程| 久久久无码精品亚洲日韩蜜臀浪潮| 成年私人影院免费视频网站| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲精品在线播放视频| 国产成人在线观看免费网站|