
组件代码
javascript
// app.js
App({
onLaunch() {
const systemInfo = wx.getSystemInfoSync();
this.globalData.statusBarHeight = systemInfo.statusBarHeight;
},
globalData: {
statusBarHeight: 0,
}
})
header.wxml
html
<view class="header custom {{fixedTop?'fixed':''}}" style="padding-top:{{statusBarHeight}}px; background: {{background}}; z-index: 10">
<view class="navigation" wx:if="{{nav}}">
<navigator class="nav" hoverClass="none" openType="navigateBack" wx:if="{{canGoBack&&autoGoBack}}">
<image src="https://nodestatic.fbstatic.cn/wxmini/imgs/back.png"></image>
</navigator>
<view bindtap="back" class="nav" wx:if="{{canGoBack&&!autoGoBack}}">
<image src="https://nodestatic.fbstatic.cn/wxmini/imgs/back.png"></image>
</view>
<text wx:if="{{canGoBack&&!small}}">|</text>
<navigator class="nav" hoverClass="none" openType="reLaunch" url="../../pages/index/index" wx:if="{{!(small&&canGoBack)}}">
<image src="https://nodestatic.fbstatic.cn/wxmini/imgs/home.png"></image>
</navigator>
</view>
<slot></slot>
<text class="title" style="margin-right: {{small?80:0}}rpx;color:#{{small?'3C464F':'000'}}" wx:if="{{showTitle}}">{{title}}</text>
</view>
<view class="{{!fixedTop?'fixed':''}}" style="height: calc({{statusBarHeight+44}}px)"></view>
CSS
css
.header {
box-sizing: initial;
color: #3c464f;
font-size: 34rpx;
font-weight: 700;
height: 44px;
line-height: 44px;
position: relative;
text-align: center
}
.navigation {
align-items: center;
background: #fff;
border: 1px solid #ebebeb;
border-radius: 28px;
bottom: 8px;
color: #ebebeb;
display: -webkit-flex;
display: flex;
font-weight: 100;
height: 28px;
justify-content: center;
left: 15rpx;
line-height: 0;
position: absolute
}
.header .navigation text {
display: inline;
flex: none;
font-size: 16px;
margin: 0
}
.header .navigation image {
height: 16px;
width: 16px
}
.header .nav {
height: 16px;
width: 38px
}
.fixed {
left: 0;
position: fixed;
right: 0;
top: 0;
z-index: -100
}
.header .title {
display: inline-block;
max-width: 390rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
@media screen and (min-width:600px) {
.header {
font-size: 20px
}
}
JS
javascript
const app = getApp();
Component({
options: {
},
properties: {
title: {
value: "",
type: String
},
background: {
value: "#fff",
type: String
},
nav: {
value: true,
type: Boolean
},
fixedTop: {
value: true,
type: Boolean
},
small: {
value: false,
type: Boolean
},
showTitle: {
value: true,
type: Boolean
},
autoGoBack: {
value: true,
type: Boolean
}
},
data: {
statusBarHeight: app.globalData.statusBarHeight,
canGoBack: false
},
attached: function () {
this.setData({
canGoBack: getCurrentPages().length > 1
});
},
methods: {
back: function () {
this.triggerEvent("back");
}
}
});
使用
javascript
{
"usingComponents": {
"header": "../../components/header/header"
}
}
index.wxml
html
<header title="关于我们"></header>

html
<header title="证件照首页" nav="{{false}}"></header>
<navigator class="about-us" hoverClass="none" style="top: calc({{statusBarHeight+22}}px - 24rpx)" url="../about-us/about-us">
<image src="/static/icon-about-us.png"></image>
</navigator>
CSS
css
.about-us {
left: 30rpx;
position: fixed;
z-index: 10
}
.about-us,
.about-us image {
height: 48rpx;
width: 48rpx
}