看着原博文https://www.cnblogs.com/sese/p/9761713.html簡單的練習。
1.在app.json中 window配置navigationStyle
2.計算相關值
1. 整個導航欄的高度;
2. 膠囊按鈕與頂部的距離;
3. 膠囊按鈕與右側的距離。
小程序可以通過 wx.getMenuButtonBoundingClientRect() 獲取膠囊按鈕的信息 和 wx.getSystemInfo() 獲取設備信息
通過這些信息我們可以計算出上面說的3個值:
1. 整個導航欄高度 = statausBarHeight + height + (top-statausBarHeight )*2;
2. 膠囊按鈕與頂部的距離 = top;
3.膠囊按鈕與右側的距離 = windowWidth - right。
App.js 代碼如下:
3.頭部組件navBar
navBar.wxml
<view class="navbar" style="height:{{navHeight}}px;"> <!-- 左上角 返回按鈕 和 home按鈕 wx:if="{{showNav}}" 是控制左上角按鈕的顯示隱藏,首頁不顯示 --> <view class="navbar_left" style="top:{{navTop}}px;" wx:if="{{showNav}}"> <!-- 控制返回按鈕的顯示 --> <view bindtap="navBack"><image src="/image/back.png"></image></view> <!-- home按鈕 wx:if="{{showHome}}" 是控制左上角 home按鈕的顯示隱藏--> <view class="nav_line" bindtap="navHome" wx:if="{{showHome}}"><image src="/image/home.png"></image></view> </view> <!-- 中間標題 --> <view class="navbar_title" style="top:{{navTop}}px;">{{pageName}}</view> </view>
navBar.wxss
.navbar { width: 100%; overflow: hidden; position: relative; top: 0; left: 0; z-index: 10; flex-shrink: 0; background: #fff; } .navbar_left{ display: -webkit-flex; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; position: absolute; left: 10px; z-index: 11; line-height: 1; padding: 3px; border:1rpx solid #f0f0f0; border-radius: 40rpx; overflow: hidden; background: rgba(255,255,255,0.6); } .navbar_left view{ width: 50rpx; height: 50rpx; margin-right: 10rpx; } .navbar_left view image{ width: 100%; height: 100%; } .nav_line{ border-left: 1rpx solid #f0f0f0; padding-left: 8px; } .navbar_title{ width: 100%; box-sizing: border-box; padding-left: 115px; padding-right: 115px; height: 32px; line-height: 32px; text-align: center; position: absolute; left: 0; z-index: 10; color: #333; font-size: 16px; font-weight: bold; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
navBar.js
const App = getApp(); Component({ /** * 組件的屬性列表 */ properties: { pageName: String, //中間的title showNav: { //判斷是否顯示左上角的按鈕 type: Boolean, value: true }, showHome: { //判斷是否顯示左上角的home按鈕 type: Boolean, value: true } }, /** * 組件的初始數據 */ data: { showNav: true, //判斷是否顯示左上角的home按鈕 showHome: true, //判斷是否顯示左上角的按鈕 }, lifetimes: { // 生命周期函數,可以為函數,或一個在methods段中定義的方法名 attached: function () { this.setData({ navHeight: App.globalData.navHeight, navTop: App.globalData.navTop }) } }, /** * 組件的方法列表 */ methods: { //回退 navBack: function () { wx.navigateBack() }, //回主頁 navHome: function () { wx.navigateTo({ url: '/pages/home/home' }) }, } })
navBar.json
4.index中
index.json
index.wxml
<view class="view-page"> <navbar page-name="你當前頁面的名字" show-nav="{{showNav}}" show-home="{{showHome}}"></navbar> <view class='page-content'> <!--這里放你的內容--> <navigator url="../demo1/demo1">跳轉</navigator> </view> </view>
index.js
5.demo1中
demo1.wxml
demo.js
6.home頁
home.wxml
home.js
最后效果圖: