此组件一般用于在特殊情况下,需要自定义导航栏的时候用到,一般建议使用uni-app带的导航栏。

提示

右侧的演示中,导航栏上方有圆角,也有顶部的手机模型状态栏内容,以及返回图标和文字不对齐的情况。这是因为网页演示导致,实际中无此情况,请通过右上角的“演示”扫码查看实际效果。

# 平台差异说明

App(vue) App(nvue) H5 小程序

# 基本使用

默认情况下,该组件只有向左的箭头,点击可以返回上一页,如果您想将自定义导航栏用在tabbar(不存在要返回的逻辑)页面, 这样会隐藏左边的返回图标区域。

  • 如果想在返回箭头的右边自定义类似"返回"字样,可以将left-text设置为"返回"
  • 通过title参数传入需要显示的标题,通过title-width(rpx)设置标题区域的宽度,文字超出会通过省略号隐藏
  • 通过fixed配置是否将导航栏固定在顶部

说明

  • 在小程序中,导航栏会自动适配导航栏右侧的胶囊位置,避开该区域
  • 组件底部默认有一条下边框,如您不需要,可以设置borderfalse即可
<template>
	<view>
		<!-- 2.0.19支持autoBack,默认为false -->
        <up-navbar
            title="个人中心"
            @rightClick="rightClick"
            :autoBack="true"
        >
        </up-navbar>
	</view>
</template>
<script setup>  
  
// 定义方法  
const rightClick = () => {  
    console.log('rightClick');  
};  
  
const leftClick = () => {  
    console.log('leftClick');  
};  

</script>
<script>
    methods:{
        rightClick() {
            console.log('rightClick');
        },
        leftClick() {
            console.log('leftClick');
        }
    }
</script>

# 注意事项

既然是要自定义导航栏,那么首先就要取消系统自带的导航栏,需要在uni-app目的根目录的"pages.json"中设置,同时在此设置状态栏字体的颜色(H5无效), 自定义导航栏后,如果想通过"uni.setNavigationBarColor"动态设置导航栏颜色相关参数,是可能会出问题的,请勿使用此方式。

// pages.json

"pages": [
	// navbar-自定义导航栏
	{
		"path": "/pages/navbar/index",
		"style": {
			"navigationStyle": "custom" ,// 隐藏系统导航栏
			"navigationBarTextStyle": "white" // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一
		}
	}
]

# 导航栏高度

可以通过height(单位px,默认44,和uni-app统导航栏高度一致)配置导航栏的高度,此高度为导航栏内容的高度,不含状态栏的高度,组件内部会自动 加上状态栏的高度,并填充状态栏的占位区域。

注意上方说的uni-app方的高度,这里指的是H5,和APP。至于各家小程序,由于受导航栏右侧胶囊的影响,目前组件内部给安卓设定的导航栏高度为48px,iOS设定的导航栏高度为44,这是结合了大量的 实践的出来的结果,具备完好的兼容性。

# 自定义导航栏内容

通过自定义slot传入的内容

<template>
	<view>
        <up-navbar
            leftText="返回"
            title="个人中心"
            :safeAreaInsetTop="false"
        >
            <template #left>
                <view
                    class="u-nav-slot"
                >
                    <up-icon
                        name="arrow-left"
                        size="19"
                    ></up-icon>
                    <up-line
                        direction="column"
                        :hairline="false"
                        length="16"
                        margin="0 8px"
                    ></up-line>
                    <up-icon
                        name="home"
                        size="20"
                    ></up-icon>
                </view>
          </template>
	</up-navbar>
  </view>
</template>

# 自定义导航栏背景颜色

uview-plus提供了一个bgColor参数,可以自定义导航栏的背景颜色:

<template>
	<view>
		<up-navbar title="" :bgColor="bgColor">
			
		</up-navbar>
		<view class="content">
			<!-- 正文内容 -->
		</view>
	</view>
</template>
<script setup>  
import { ref } from 'vue';  
  
// 创建响应式数据  
const bgColor = ref('#001f3f');  
</script>
<script>
	export default {
		data() {
			return {
				bgColor: '#001f3f',
			}
		}
	}
</script>

# 右侧演示页面源代码地址

点击以下链接以查看右侧演示页面的源码


 github  gitee

# API

# Props

参数 说明 类型 默认值 可选值
safeAreaInsetTop 是否开启顶部安全区适配 Boolean true false
placeholder 固定在顶部时,是否生成一个等高元素,以防止塌陷 Boolean false true
fixed 导航栏是否固定在顶部 Boolean true false
border 导航栏底部是否显示下边框 Boolean false true
leftIcon 左边返回图标的名称,只能为uview-plus自带的图标 String arrow-left -
leftText 左边的提示文字 String - -
rightText 右边的提示文字 String - -
rightIcon 右边返回图标的名称,只能为uview-plus自带的图标 String - -
title 导航栏标题,如设置为空字符,将会隐藏标题占位区域 String - -
bgColor 导航栏背景设置 String #ffffff -
titleWidth 导航栏标题的最大宽度,内容超出会以省略号隐藏,单位rpx String | Number 400rpx -
height 导航栏高度(不包括状态栏高度在内,内部自动加上),单位px String | Number 44px -
leftIconSize 左侧返回图标的大小 String | Number 20px -
leftIconColor 左侧返回图标的颜色 String #303133 -
autoBack 2.0.19 点击左侧区域(返回图标),是否自动返回上一页 Boolean false true
titleStyle 2.0.23 标题的样式,对象或字符串形式 String | Object - -

# Event

名称 说明 类型
leftClick 点击左侧区域 Handler
rightClick 点击右侧区域 Handler

# Slot

名称 说明
left 自定义左侧部分内容
right 自定义右侧部分内容
center 2.0.17 自定义中部内容