先說一下我的需求吧,因為我們的小程序是嵌套了webview。 點擊webview里面的項目,點的層級太深,用戶后退很麻煩。然后pm又找了一個自定義的導航的小程序,發(fā)現(xiàn)別人可以,然后我就開始研究。
—— 不完全統(tǒng)計(ip6 , ip5 , ip6p , ipx , 小米mix2 , 小米5等綜合了開發(fā)工具提供的數(shù)據(jù)和真機數(shù)據(jù))所得
"window": { "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "backgroundColor": "#fff", "navigationStyle": "custom" },復制代碼
這里navigationStyle 配置修改之后就只剩一個膠囊按鈕,也就意味著所有頁面的導航都的自定義實現(xiàn),你可以選擇模版或者組件來開發(fā),這里我是選擇用的組件開發(fā)。
然后定義導航的各個數(shù)值,我是在app。js 里面定義的
title_height: "64", statusbarHeight: "24", titleIcon_height: "32", titleIcon_width: "87", title_top: "24", title_text: "xxx", // iphone X + 24 prefix: 24 復制代碼
wxml的代碼
<view> <view class="title" style="height:{{title_height}}px;padding-top:{{statusbarHeight}}px;background-color:{{isIndex?'#175dc6':'#fff'}}"> <view class="title_text" style="color:{{isIndex?'#fff':'#000'}}">{{title_text}}</view> <view wx:if="{{isShow}}" class="title_icon" style="top:{{title_top}}px;height:{{titleIcon_height}}px;width:{{titleIcon_width}}px;background-color:{{isIndex?'#175dc6':'#fff'}}"> <image bindtap="_goBack" class="floatL" src="/img/fanhui_icon.png"></image> <view class="floatL"></view> <image bindtap="_goHome" src="/img/home_icon.png"></image> </view> </view> <view style='height:{{title_height}}px;'></view> </view>復制代碼
wxss的代碼
.title { width: 100%; background-color: #175dc6; box-sizing: border-box; position: fixed; transform: translateZ(0); z-index: 999990;} .title_text { text-align: center; font-size: 37rpx; color: #fff; line-height: 44px;} .title_icon { background-color: #175dc6; position: fixed; top: 54rpx; left: 16rpx; border-radius: 64rpx; box-sizing: border-box; border: 0.5px solid #ebe48e; display: flex;} .title_icon image { height: 20px; width: 20px; padding-top: 5px; display: inline-block; overflow: hidden;} .title_icon view { height: 18px; border-left: 1px solid #bfb973; margin-top: 6px;} .floatL { float: left;} .title_icon image:nth-of-type(1), .title_icon image:nth-of-type(2) { padding-right: 10px; padding-bottom: 10px; padding-left: 10px;}復制代碼
js的代碼
const app = getApp(); Component({ properties: { isShow: { // 是否顯示后退按鈕 type: String, value: "1" }, isIndex: { // 是否主頁 type: Boolean, value: false, }, title_height: { // type: String, value: app.config.title_height, }, titleIcon_height: { type: String, value: app.config.titleIcon_height, }, titleIcon_width: { type: String, value: app.config.titleIcon_width, }, statusbarHeight: { type: String, value: app.config.statusbarHeight, }, title_top: { type: String, value: app.config.title_top, }, title_text: { type: String, value: app.config.title_text, }, }, methods: { _goBack: function() { wx.navigateBack({ delta: 1 }); }, _goHome: function() { wx.switchTab({ url: "/pages/index/index" }); } } })復制代碼
這樣組件就寫好了 只需要在你每個頁面里面用這個組件傳不同的值就可以了。
<header isIndex="true" title_text="首頁" isShow=""></header> 在首頁的wxml應用。 json 文件里面的配置 "navigationBarTitleText": "啦啦啦", "navigationBarBackgroundColor": "#175dc6", "usingComponents": { "header": "/components/layout/header/header" }復制代碼
適配上可能會有點問題,希望大神有更好的解決方案,告訴我喲。
一步步記錄自己的踩坑歷程~我要做到我技術(shù)不是最好的,但我給你總結(jié)的小程序的東西是最簡單粗暴的哈哈哈
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務