最近做的项目涉及相应的页面显示相应的顶部标题,所以就需要自定义头部导航了。

首先新建一个顶部导航公用组件topnav,导航高度怎么计算?

1.wx.getSystemInfo 和 wx.getSystemInfoSync 获取机器信息
2.screenHeight - windowHeight 计算标题栏高度
3.标题栏高度
'iPhone': ,
'iPhone X': ,
'android':

app.js

//app.js
App({
onLaunch: function () {
var that = this
wx.getSystemInfo({
success: function (res) {
that.globalData.platform = res.platform
let totalTopHeight =
if (res.model.indexOf('iPhone X') !== -) {
totalTopHeight =
} else if (res.model.indexOf('iPhone') !== -) {
totalTopHeight =
}
that.globalData.statusBarHeight = res.statusBarHeight
that.globalData.titleBarHeight = totalTopHeight - res.statusBarHeight
},
failure() {
that.globalData.statusBarHeight =
that.globalData.titleBarHeight =
}
})
})

还需更改配置app.json

"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#15ae67",
"navigationBarTitleText": "微信小程序",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
//自定义导航栏配置
}

topnav.wxml

<!--template.wxml-->
<!-- 这是自定义组件的内部WXML结构 -->
<view style="padding-top:{{someData.statusBarHeight+someData.titleBarHeight}}px">
<view class="hh-header">
<view class="status-bar" style="height:{{someData.statusBarHeight}}px"></view>
<view class="title-bar" style="height:{{someData.titleBarHeight}}px">
<view wx:if="{{isShowBack=='true'}}" class='hh-nav-back ico-back' bindtap='goback'></view>
<view wx:if="{{isShowBack=='false'}}" class='hh-nav-back'></view>
<view class="hh-title">{{innerTitle}}</view>
<view class="hh-nav-right"></view>
</view>
</view>
</view>
<slot></slot>

topnav.json

{
"component": true
}

topnav.js

const app = getApp()
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerTitle: {
type: String,
value: '头部标题'
},
isShowBack: {
type: String,
value: "true"
}
},
data: {
// 这里是一些组件内部数据
someData: {
statusBarHeight: app.globalData.statusBarHeight,
titleBarHeight: app.globalData.titleBarHeight
}
},
methods: {
// 这里是一个自定义方法
goback: function () {
wx.navigateBack({
delta: ,
})
}
}
})

topnav.wxss

.ico-back{
width: 36rpx;
height: 36rpx;
background-size: contain;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRjFBMThDOEU1NDExRThCQUMxRTFBRUNDRDNCMkJEIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjAwRjFBMThEOEU1NDExRThCQUMxRTFBRUNDRDNCMkJEIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDBGMUExOEE4RTU0MTFFOEJBQzFFMUFFQ0NEM0IyQkQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDBGMUExOEI4RTU0MTFFOEJBQzFFMUFFQ0NEM0IyQkQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7a0EjNAAAA80lEQVR42sTYOw7DIAwGYNxuPXHnTtygvUAuWalyE6WRMlBj7N/GEkOiCD4B4eHCzEUq3ljruPMe9fcstxcJOmGOqNNADcwR+SABs6SDOphrKqiHSZ3UGkwaSItJAY1gwkGjmFCQBRMGsmJCQB4MHOTFQEEIDAyEwkBASIwGRIrFr/XBZy03InpbQFJcFHW8Gu+2nnmUiFAM2daLzz/DVtHtaSc1DIX87SEo9MLoRkVsHS5U1OZqRkUeP0yo6APaMCrjCDuEyjrkq1GZ1yAVKvui2EXNuEqLqFnJBgk1LR3TQi08OWF1RqmyH8SAtB0yvgIMAGA41d9Fo4AZAAAAAElFTkSuQmCC);
background-repeat: no-repeat;
background-position-x: 20rpx;
}
.hh-header {
position: fixed;
top: ;
width: %;
background-color: #14ae66;
z-index: ;
}
.hh-title{
font-size: 38rpx;
text-align: center;
color: #fff;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.title-bar {
display: flex;
justify-content: space-between;
align-items: center;
}
.hh-nav-right{
width: 116px;
}
.hh-nav-back{
width: 116px; }

这样组件就写好了  只需要在你每个页面里面用这个组件传不同的值就可以了。

index.wxml

<component-topnav inner-title="{{title}}"></component-topnav>  //显示返回按钮
 <component-topnav inner-title="我的管理" is-show-back="false"></component-topnav>  //不显示返回按钮

index.js

//获取应用实例
const app = getApp()
Page({
data: {
motto: 'Hello World',
userInfo: {},
title:'自定义导航标题'
},
})

index.json

{
"usingComponents": {
"component-topnav": "/pages/component/topnav"
}
}

最新文章

  1. .NET 扩展方法(Extention Method)的要点
  2. faceBook Pop动画库手动添加版本
  3. Java基础-接口看下图实现如下接口和类,并完成Adventure中的主方法
  4. C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级
  5. 【wikioi】2822 爱在心中
  6. git clone 错误ca-certificates.crt
  7. three Sum
  8. 2016年12月7日 星期三 --出埃及记 Exodus 21:2
  9. Android 完美退出 App (Exit)
  10. Qt Linux 使用QJson库
  11. (017)将一棵二叉查找树重构成链表(keep it up)
  12. expandableListView的divider该溶液显示在黑色
  13. [codevs]1087麦森数
  14. steam商店正式支持RMB直接结算
  15. Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
  16. luogu2577/bzoj1899 午餐 (贪心+dp)
  17. centos 下修改mysql 默认字符集
  18. 5D - Rectangles
  19. Qt treewidget样式的自定义(转)
  20. 【学习笔记】dp基础

热门文章

  1. AutoLayout面试题记录-用NSLayoutConstraint写动画
  2. Access分页语句
  3. 四-2、Move、fix、unfix命令
  4. MapGISK9安装
  5. Zball in Tina Town
  6. 解决 canvas 在高清屏中绘制模糊的问题
  7. 初步学习jQuery之事件
  8. 【Java架构:进阶技术】——一篇文章搞掂:JVM调优
  9. IntelliJ IDEA最新版配置Tomcat(完整版教程)
  10. ElasticSearch2.2.0安装