自定义导航栏 NavBar
引入组件
微信小程序现已支持全局组件,所以在app.json引入即可在其他页面直接使用,相关链接,要加上 miniprogram_npm/这个文件路径,不加会找不到(如果后续微信小程序修复该问题可去掉)
{
"usingComponents": {
"ac-nav-bar": "miniprogram_npm/@csr/awesome_components/components/nav-bar/nav-bar"
}
}
<ac-nav-bar title="NavBar" home-path="/pages/home/home"></ac-nav-bar>
基础用法
<ac-nav-bar title="NavBar" home-path="/pages/home/home"></ac-nav-bar>
改变标题栏背景颜色
<ac-nav-bar title="NavBar" home-path="/pages/home/home" background-color="red"></ac-nav-bar>
改变导航栏字体颜色
<ac-nav-bar title="NavBar" home-path="/pages/home/home" nav-bar-text-color="white"></ac-nav-bar>
改变导航栏字体颜色
<ac-nav-bar title="NavBar" home-path="/pages/home/home" nav-bar-text-color="white"></ac-nav-bar>
使导航栏字体icon颜色和字体颜色不同
<ac-nav-bar
title="NavBar"
home-path="/pages/home/home"
nav-bar-icon-color="pink"
nav-bar-text-color="white"
></ac-nav-bar>
使用图片作为背景
<ac-nav-bar
title="NavBar"
home-path="/pages/home/home"
bg-image="xxx.png"
></ac-nav-bar>
自定义左上角按钮
<ac-nav-bar
title="NavBar"
home-path="/pages/home/home"
custom-left-corner="{{true}}"
>
<view slot="left-corner" style="height: 100%;">返回</view>
</ac-nav-bar>
自定义中间内容
<ac-nav-bar home-path="/pages/home/home">
<view slot="content">自定义内容</view>
</ac-nav-bar>
API
属性 | 类型 | 说明 | 默认值 |
---|---|---|---|
title | String | 页面标题 | |
nav-bar-text-color | String | 页面标题颜色 | black |
nav-bar-icon-color | String | 左上角按钮颜色,如不传默认和标题颜色相同 | |
pill-padding-bottom | Number | 右上角胶囊按钮的padding-left,单位px | 5 |
custom-left-corner | Boolean | 开启自定义左上角内容 | false |
home-path | String | 首页路径 | |
background-color | String | 导航栏背景色 | transparent |
z-index | String | Number | 导航栏的z-index | 3 |
bg-image | string | 导航栏背景图 | |
img-mode | string | 导航栏背景图,裁剪模式 | widthFix |
enable-placeholder | Boolean | 是否开启占位元素,该元素的高度和navbar的高度相同 | true |
事件
事件名 | 说明 | 参数 |
---|---|---|
onlayout | 导航栏ready生命周期时触发,返回导航栏的高度,单位px,event.detail = {height: xx} | event: Event |
slot
名称 | 说明 |
---|---|
left-corner | 左上角内容 |
content | 中间内容 |
外部样式类
名称 | 说明 |
---|---|
custom-class-title | 导航栏标题样式类 |
custom-class-img | 导航栏背景图片样式类 |
WARNING
该组件的高度是通过微信小程序提供的getMenuButtonBoundingClientRect这个api计算得出的,但是该api存在bug,具体链接,目前解决的方案是通过setStorageSync存起来,如果获取不到就去缓存中拿第一次存的值,如果发现高度出现问题请查看缓存的key是否被覆盖。
该组件的定位是fixed定位,但是微信小程序在iphone XS MAX上fixed定位的元素层级有问题,具体链接,如果发现导航栏无法覆盖具有旋转动画的元素时,请去社区找官方求助,官方给我的答复并不能解决这个问题。。。
input的placeholder层级问题,这个问题从微信小程序出现就有,之前好像是修复了,但是最近又出现了,具体链接,我在自己测试的时候是发现是无法遮盖住input的placeholder的,只能等待官方修复了。