NavigationBar 导航栏
此组件通常用于自定义导航栏。
基础使用
- 此组件默认高度为
44px。
<hi-navigation-bar></hi-navigation-bar>背景
可以通过 bg 属性设置导航栏背景,也可以通过 autoBg 属性来设置是否开启自动读取在 pages.json 中配置的 navigationBarBackgroundColor 值用作导航栏背景, autoBg 默认为 true。
<hi-navigation-bar autoBg></hi-navigation-bar>
<hi-navigation-bar bg="#ff0000"></hi-navigation-bar>设置标题
标题文本
可以通过 title 属性设置导航栏标题,也可以通过 autoTitle 属性来设置是否自动读取在 pages.json 中配置的 navigationBarTitleText 值用作导航栏标题, autoTitle 默认为 true。
标题颜色
标题的颜色默认读取 pages.json 中配置的 navigationBarTextStyle 值用作导航栏标题颜色。也可以通过 color 或 titleColor 属性自定义设置标题颜色。
<hi-navigation-bar autoTitle></hi-navigation-bar>
<hi-navigation-bar title="导航栏标题" titleColor="#ff0000"></hi-navigation-bar>标题对齐方式
通过 align 属性设置标题对齐方式,可选值为:left、center、right。
<hi-navigation-bar title="标题居左" align="left"></hi-navigation-bar>
<hi-navigation-bar title="标题居中" align="center"></hi-navigation-bar>
<hi-navigation-bar title="标题居右" align="right"></hi-navigation-bar>返回按钮
- 通过
showBack属性设置是否开启显示返回按钮。 - 通过
backText属性设置返回文字。
提示
showBack 的描述为是否开启显示返回按钮,设置为 true 时并不一定会显示返回按钮,这是因为组件还可以设置 autoShowBack 并且默认为 true,autoShowBack 为 true 时,表示开启让组件自己判断是否显示返回按钮,判断逻辑为,当 showBack 为 true,并且当前页面不是 tabbar 页面,并且当前页面不是页面栈中的唯一一个页面时才会显示返回按钮。如果需要手动控制返回按钮的显示隐藏,请将 autoShwowBack 设置为 false 并通过 showBack 手动控制返回按钮的显示状态。
<hi-navigation-bar title="手动控制返回按钮" :autoShowBack="false" :showBack="true" backText="返回"></hi-navigation-bar>自动返回
通过 autoBack 设置点击返回按钮后是否自动返回上一页。默认为 true。如果在返回上一页之前需要处理其他逻辑,请将 autoBack 设置为 false,等处理完逻辑后在手动调用 api 返回上一页。
<template>
<hi-navigation-bar title="标题" :autoBack="false" :autoShowBack="false" :showBack="true" backText="返回" @back="handleBack"></hi-navigation-bar>
</template>
<script setup>
// 返回事件
function handleBack() {
// ... 处理逻辑
// 返回上一页
uni.$hiRouter.back();
// 或
uni.navigateBack({
delta: 1
});
}
</script>菜单
为了应对开发中常见的需求,此组件还提供了菜单栏的功能,通过 leftMenu 设置左侧菜单数据,通过 rightMenu 设置右侧菜单数据,菜单项数据格式如下示例:
<template>
<hi-navigation-bar :leftMenu="menus" :rightMenu="menus"></hi-navigation-bar>
</template>
<script setup>
import { ref } from 'vue';
// 菜单数据
// 菜单数据格式如下,所有属性都为可选,为空则不显示或不设置
const menus = ref([
{
icon: "weixin", // 菜单图标
text: "微信", // 菜单文本
disabled: false, // 菜单是否禁用
class: "navigation-bar-menu--weixin" // 菜单类名
style: "color: red" // 菜单样式
hover: "h-hover", // 菜单点击态类名
iconStyle: "color: red" // 菜单图标样式
textStyle: "color: red" // 菜单文本样式
}
]);
</script>Props
| 属性名 | 说明 | 类型 | 默认值 | 可选值 | 版本 |
|---|---|---|---|---|---|
hover | 指定返回按钮、菜单按下去的样式类 | String | hi-hover | - | - |
title | 导航栏标题 | String | - | - | - |
titleColor | 导航栏标题颜色 | String | -` | - | - |
titleFontSize | 导航栏标题字体大小 | String | - | - | - |
titleFontWeight | 导航栏标题字体粗细 | String | - | - | - |
autoTitle | 是否自动设置标题 | Boolean | true | false | - |
align | 导航栏标题对齐方式 | String | center | left、right | - |
showBack | 是否显示返回按钮 | Boolean | true | false | - |
autoShowBack | 是否自动显示返回按钮 | Boolean | true | false | - |
autoBack | 点击后是否自动返回上一页 | Boolean | true | false | - |
backText | 返回按钮文本 | String | - | - | - |
backIcon | 返回按钮图标 | String | __zuo | - | - |
color | 组件文字颜色 | String | - | - | - |
fontSize | 组件文字大小 | String | - | - | - |
height | 组件高度 | String | - | - | - |
bg | 组件背景 | String | - | - | - |
autoBg | 是否自动设置背景 | Boolean | true | false | - |
backFontSize | 返回按钮字体大小 | String | - | - | - |
backColor | 返回按钮字体颜色 | String | - | - | - |
backFontWeight | 返回按钮字体粗细 | String | - | - | - |
backIconColor | 返回按钮图标颜色 | String | - | - | - |
backIconSize | 返回按钮图标大小 | String | - | - | - |
leftMenu | 左侧菜单数据 | Array<Object> | null | - | - |
rightMenu | 右侧菜单数据 | Array<Object> | null | - | - |
menuColor | 菜单字体颜色 | String | - | - | - |
menuFontSize | 菜单字体大小 | String | - | - | - |
menuIconColor | 菜单图标颜色 | String | - | - | - |
menuIconSize | 菜单图标大小 | String | - | - | - |
Event
| 事件名 | 说明 | 回调参数 | 版本 |
|---|---|---|---|
back | 返回按钮点击事件 | - | - |
menuClick | 菜单点击事件 | menu: 按钮数据。current: 按钮下标。position: 按钮位置,left / right | - |
leftMenuClick | 左侧菜单点击事件 | menu: 按钮数据。current: 按钮下标。 | - |
rightMenuClick | 右侧菜单点击事件 | menu: 按钮数据。current: 按钮下标。 | - |
Slots
| 名称 | 说明 | 参数 | 版本 |
|---|---|---|---|
back | 返回按钮插槽 | - | - |
left | 左侧内容插槽,不包含返回按钮 | - | - |
title | 标题插槽 | - | - |
right | 右侧内容插槽 | - | - |
样式变量
组件提供了以下样式变量,可以在使用时设置这些变量来修改组件的样式。
| 变量名 | 默认值 | 版本 |
|---|---|---|
--hi-navigation-bar-height | 44px | - |
--hi-navigation-bar-display | flex | - |
--hi-navigation-bar-align-items | center | - |
--hi-navigation-bar-padding | 0 8px | - |
--hi-navigation-bar-gap | 8px | - |
--hi-navigation-bar-background | transparent | - |
--hi-navigation-bar-color | inherit | - |
--hi-navigation-bar-font-size | inherit | - |
--hi-navigation-bar-z-index | var(--hi-index-upper) | - |
--hi-navigation-bar-left-flex-shrink | 0 | - |
--hi-navigation-bar-left-flex | 1 / none | - |
--hi-navigation-bar-left-display | flex | - |
--hi-navigation-bar-left-align-items | center | - |
--hi-navigation-bar-left-justify-content | flex-start | - |
--hi-navigation-bar-left-gap | 0 | - |
--hi-navigation-bar-back-font-size | 14px | - |
--hi-navigation-bar-back-color | inherit | - |
--hi-navigation-bar-back-font-weight | 500 | - |
--hi-navigation-bar-back-display | flex | - |
--hi-navigation-bar-back-align-items | center | - |
--hi-navigation-bar-back-gap | 0 | - |
--hi-navigation-bar-back-icon-color | inherit | - |
--hi-navigation-bar-back-icon-font-size | 22px | - |
--hi-navigation-bar-center-flex-shrink | 0 | - |
--hi-navigation-bar-center-flex | 2 / 1 | - |
--hi-navigation-bar-center-display | block | - |
--hi-navigation-bar-title-color | inherit | - |
--hi-navigation-bar-title-font-size | 17px | - |
--hi-navigation-bar-title-font-weight | 700 | - |
--hi-navigation-bar-title-text-align | center / left / right | - |
--hi-navigation-bar-right-flex-shrink | 0 | - |
--hi-navigation-bar-right-flex | 1 / none | - |
--hi-navigation-bar-right-display | flex | - |
--hi-navigation-bar-right-align-items | center | - |
--hi-navigation-bar-right-justify-content | flex-end | - |
--hi-navigation-bar-menu-button-width | 0 | - |
--hi-navigation-bar-menus-color | inherit | - |
--hi-navigation-bar-menus-display | flex | - |
--hi-navigation-bar-menus-align-items | center | - |
--hi-navigation-bar-menus-font-size | 12px | - |
--hi-navigation-bar-menus-text-align | center | - |
--hi-navigation-bar-menus-gap | 10px | - |
--hi-navigation-bar-menu-display | flex | - |
--hi-navigation-bar-menu-flex-direction | column | - |
--hi-navigation-bar-menu-flex-align-items | center | - |
--hi-navigation-bar-menu-flex-justify-content | center | - |
--hi-navigation-bar-menu-gap | 2px | - |
--hi-navigation-bar-menu-line-height | 1 | - |
--hi-navigation-bar-menu-icon-color | inherit | - |
--hi-navigation-bar-menu-icon-font-size | 18px | - |
