TnNavbar-顶部导航栏
该组件一般用于特殊需要自定义顶部导航栏的情况。
注意
如果需要使用图鸟的自定义导航栏,请将原生导航栏的样式设置为custom
,详细设置方式请看官方文档: https://uniapp.dcloud.io/collocation/pages?id=custom
组件位置
typescript
import TnNavbar from '@tuniao/tnui-vue3-uniapp/components/navbar/src/navbar.vue'
import TnNavbar from '@tuniao/tnui-vue3-uniapp/components/navbar/src/navbar.vue'
1
typescript
import TnNavbar from '@/uni_modules/tuniaoui-vue3/components/navbar/src/navbar.vue'
import TnNavbar from '@/uni_modules/tuniaoui-vue3/components/navbar/src/navbar.vue'
1
平台差异说明
App(vue) | H5 | 微信小程序 | 支付宝小程序 | ... |
---|---|---|---|---|
√ | √ | √ | √ | 适配中 |
基础使用
默认情况下,本组件的高度是根据系统状态栏高度自动计算的,如果需要自定义高度,可以通过height
属性来设置。
在H5
端中导航栏的高度为45px
,左边返回区域的宽度为87px
、高度为32px
在非H5
中,例如微信小程序
、支付宝小程序
...中会根据系统的状态栏
和右边操作胶囊
的位置宽高信息来计算导航栏的高度
和返回区域的宽高
默认情况下,组件会同时显示返回上一页
和返回首页
的按钮,可以通过设置back-icon
或者home-icon
为空隐藏对应的按钮。
- 通过
back-text
设置左边返回区域的文字 - 通过
fixed
设置导航栏固定在顶部 - 在默认的
slots
中设置导航栏的标题内容信息
vue
<template>
<!-- 固定在顶部 -->
<TnNavbar fixed> TuniaoUI </TnNavbar>
</template>
<template>
<!-- 固定在顶部 -->
<TnNavbar fixed> TuniaoUI </TnNavbar>
</template>
1
2
3
4
2
3
4
vue
<template>
<!-- 设置导航栏的高度 -->
<TnNavbar height="45px"> TuniaoUI </TnNavbar>
<!-- 隐藏返回home页面的按钮 -->
<TnNavbar height="45px" home-icon=""> TuniaoUI </TnNavbar>
<!-- 隐藏返回上一页的按钮 -->
<TnNavbar height="45px" back-icon=""> TuniaoUI </TnNavbar>
<!-- 隐藏返回上一页和返回home页面的按钮 -->
<TnNavbar height="45px" back-icon="" home-icon=""> TuniaoUI </TnNavbar>
<!-- 设置返回上一页文字 -->
<TnNavbar height="45px" back-text="返回"> TuniaoUI </TnNavbar>
</template>
<template>
<!-- 设置导航栏的高度 -->
<TnNavbar height="45px"> TuniaoUI </TnNavbar>
<!-- 隐藏返回home页面的按钮 -->
<TnNavbar height="45px" home-icon=""> TuniaoUI </TnNavbar>
<!-- 隐藏返回上一页的按钮 -->
<TnNavbar height="45px" back-icon=""> TuniaoUI </TnNavbar>
<!-- 隐藏返回上一页和返回home页面的按钮 -->
<TnNavbar height="45px" back-icon="" home-icon=""> TuniaoUI </TnNavbar>
<!-- 设置返回上一页文字 -->
<TnNavbar height="45px" back-text="返回"> TuniaoUI </TnNavbar>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
自定义顶部导航栏的样式
- 通过
bg-color
和text-color
设置导航栏的背景颜色和字体颜色,可以传递hex
、rgb
、rgba
和图鸟内置颜色的值背景颜色 \ 字体颜色 - 通过
opacity
设置导航栏的透明度 - 通过
bottom-shadow
隐藏底部的阴影 - 通过
frosted
设置导航栏的样式为毛玻璃效果- 在毛玻璃效果开启后
bg-color
设置背景色只能通过rgba
的方式设置背景颜色
- 在毛玻璃效果开启后
vue
<template>
<!-- 设置酷炫背景色并设置字体为白色 -->
<TnNavbar height="45px" bg-color="tn-gradient__cool-5" text-color="#fff">
TuniaoUI
</TnNavbar>
<!-- 设置导航栏的透明度为0.5 -->
<TnNavbar height="45px" opacity="0.5"> TuniaoUI </TnNavbar>
<!-- 隐藏底部阴影 -->
<TnNavbar height="45px" :bottom-shadow="false"> TuniaoUI </TnNavbar>
<!-- 开启毛玻璃效果 -->
<TnNavbar height="45px" frosted> TuniaoUI </TnNavbar>
<!-- 开启毛玻璃后修改颜色 -->
<TnNavbar height="45px" frosted bg-color="rgba(255, 255, 255, 0.5)">
TuniaoUI
</TnNavbar>
</template>
<template>
<!-- 设置酷炫背景色并设置字体为白色 -->
<TnNavbar height="45px" bg-color="tn-gradient__cool-5" text-color="#fff">
TuniaoUI
</TnNavbar>
<!-- 设置导航栏的透明度为0.5 -->
<TnNavbar height="45px" opacity="0.5"> TuniaoUI </TnNavbar>
<!-- 隐藏底部阴影 -->
<TnNavbar height="45px" :bottom-shadow="false"> TuniaoUI </TnNavbar>
<!-- 开启毛玻璃效果 -->
<TnNavbar height="45px" frosted> TuniaoUI </TnNavbar>
<!-- 开启毛玻璃后修改颜色 -->
<TnNavbar height="45px" frosted bg-color="rgba(255, 255, 255, 0.5)">
TuniaoUI
</TnNavbar>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
设置内容显示区域
默认情况下显示区域是会将左右两边的操作区域给空出来,如果需要使用左右两边的占位区域,通过以下设置进行修改
- 设置
safe-area-inset-right
为false
可以将右边的操作区域给空出来 - 设置
back-icon
、back-text
、home-icon
为空可以将左边的操作区域给空出来
vue
<template>
<!-- 占用右边的操作区域 -->
<TnNavbar height="45px" :safe-area-inset-right="false"> TuniaoUI </TnNavbar>
<!-- 内容区域占用整个区域 -->
<TnNavbar
height="45px"
back-icon=""
home-icon=""
:safe-area-inset-right="false"
>
TuniaoUI
</TnNavbar>
</template>
<template>
<!-- 占用右边的操作区域 -->
<TnNavbar height="45px" :safe-area-inset-right="false"> TuniaoUI </TnNavbar>
<!-- 内容区域占用整个区域 -->
<TnNavbar
height="45px"
back-icon=""
home-icon=""
:safe-area-inset-right="false"
>
TuniaoUI
</TnNavbar>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
自定义返回区域的内容
可以在back
的插槽中自定义返回区域的内容
vue
<template>
<TnNavbar height="45px">
TuniaoUI
<template #back>
<view>撤退</view>
</template>
</TnNavbar>
</template>
<template>
<TnNavbar height="45px">
TuniaoUI
<template #back>
<view>撤退</view>
</template>
</TnNavbar>
</template>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
自定义右边操作区域的内容
- 通过
right-operation-width
参数设置右边操作区域的宽度,设置了该属性之后safe-area-inset-right
参数将失效 - 然后通过在
right
插槽中定义右边操作区域的内容
vue
<template>
<TnNavbar height="45px" right-operation-width="80">
TuniaoUI
<template #right>
<view>设置</view>
</template>
</TnNavbar>
</template>
<template>
<TnNavbar height="45px" right-operation-width="80">
TuniaoUI
<template #right>
<view>设置</view>
</template>
</TnNavbar>
</template>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
拦截返回事件
可以通过before-back
事件来拦截返回事件,如果返回false
或者返回Promise
且被reject
则不会进行返回操作 可以通过before-home
事件来拦截返回首页事件,如果返回false
或者返回Promise
且被reject
则不会进行返回首页操作
vue
<script lang="ts" setup>
const beforeBack = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(false)
}, 1000)
})
}
</script>
<template>
<TnNavbar height="45px" :before-back="beforeBack"> TuniaoUI </TnNavbar>
</template>
<script lang="ts" setup>
const beforeBack = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(false)
}, 1000)
})
}
</script>
<template>
<TnNavbar height="45px" :before-back="beforeBack"> TuniaoUI </TnNavbar>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
API
Props
属性名 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
height | 导航栏高度,默认单位为 rpx,可以传入带单位的尺寸值 | String | - | - |
bg-color | 背景颜色,可以使用图鸟内置的背景色、hex、rgb、rgba,在frosted 为true 的时候只可以设置 rgba 类型的值 | String | - | - |
text-color | 文字颜色,支持图鸟内置的颜色值、hex、rgb、rgba | String | - | - |
frosted | 开启毛玻璃效果,在支付宝小程序中该参数无效 | Boolean | false | true |
opacity | 导航栏透明度,有效值为 0~1 | Number | 1 | - |
back-icon | 返回按钮图标 | String | left | 图标有效值 |
back-text | 返回按钮文字 | String | - | - |
home-icon | 返回首页图标 | String | home-capsule-fill | 图标有效值 |
bottom-shadow | 是否显示底部阴影 | Boolean | true | false |
safe-area-inset-right | 是否预留右边胶囊安全距离 | Boolean | true | false |
center | 居中显示内容 | Boolean | true | false |
right-operation-width | 右边操作区域的宽度,默认单位为 rpx,可以传入带单位的尺寸值,设置该参数后safe-area-inset-right 失效 | String | - | - |
before-back | 返回前回调 | Promise<boolean>| boolean | - | - |
before-home | 返回首页前回调 | Promise<boolean>| boolean | - | - |
index-url | 首页地址 | String | /pages/index/index | - |
fixed | 是否固定在顶部 | Boolean | false | true |
placeholder | 在固定后是否开启占位 | Boolean | true | false |
z-index | ZIndex | Number | 20090 | - |
Emits
事件名 | 说明 | 类型 |
---|---|---|
init-finish | 导航栏初始化完毕 | (info: NavbarRectInfo) => void |
Slots
插槽名 | 说明 |
---|---|
default | 导航栏内容 |
back | 返回区域内容 |
right | 右边操作区域内容 |
NavbarRectInfo
参数 | 说明 |
---|---|
statusHeight | 状态栏高度 |
height | 导航栏高度 |