Skip to content
12:13

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'
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'

平台差异说明

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>
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>

自定义顶部导航栏的样式

  • 通过bg-colortext-color设置导航栏的背景颜色和字体颜色,可以传递hexrgbrgba和图鸟内置颜色的值背景颜色 \ 字体颜色
  • 通过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>

设置内容显示区域

默认情况下显示区域是会将左右两边的操作区域给空出来,如果需要使用左右两边的占位区域,通过以下设置进行修改

  • 设置safe-area-inset-rightfalse可以将右边的操作区域给空出来
  • 设置back-iconback-texthome-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>

自定义返回区域的内容

可以在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>

自定义右边操作区域的内容

  • 通过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>

拦截返回事件

可以通过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>

API

Props

属性名说明类型默认值可选值
height导航栏高度,默认单位为 rpx,可以传入带单位的尺寸值String--
bg-color背景颜色,可以使用图鸟内置的背景色、hex、rgb、rgba,在frostedtrue的时候只可以设置 rgba 类型的值String--
text-color文字颜色,支持图鸟内置的颜色值、hex、rgb、rgbaString--
frosted开启毛玻璃效果,在支付宝小程序中该参数无效Booleanfalsetrue
opacity导航栏透明度,有效值为 0~1Number1-
back-icon返回按钮图标Stringleft图标有效值
back-text返回按钮文字String--
home-icon返回首页图标Stringhome-capsule-fill图标有效值
bottom-shadow是否显示底部阴影Booleantruefalse
safe-area-inset-right是否预留右边胶囊安全距离Booleantruefalse
center居中显示内容Booleantruefalse
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是否固定在顶部Booleanfalsetrue
placeholder在固定后是否开启占位Booleantruefalse
z-indexZIndexNumber20090-

Emits

事件名说明类型
init-finish导航栏初始化完毕(info: NavbarRectInfo) => void

Slots

插槽名说明
default导航栏内容
back返回区域内容
right右边操作区域内容
参数说明
statusHeight状态栏高度
height导航栏高度

Tuniao UI