Files
YGChatCS/components/TopNavBar/README.md
2025-08-02 17:35:57 +08:00

176 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TopNavBar 顶部导航栏组件
一个功能完整的顶部导航栏组件,支持固定定位、自定义样式和插槽内容。
## 功能特性
- ✅ 支持固定在页面顶部(可配置)
- ✅ 自动适配状态栏高度
- ✅ 支持自定义标题和颜色
- ✅ 支持插槽自定义内容
- ✅ 内置返回按钮功能
- ✅ 响应式设计
- ✅ 深色模式支持
- ✅ 安全区域适配
## 基础用法
### 简单使用
```vue
<template>
<TopNavBar title="页面标题" />
</template>
<script setup>
import TopNavBar from '@/components/TopNavBar/index.vue'
</script>
```
### 固定在顶部
```vue
<template>
<TopNavBar title="页面标题" :fixed="true" />
</template>
```
### 自定义样式
```vue
<template>
<TopNavBar
title="页面标题"
backgroundColor="#007AFF"
titleColor="#ffffff"
backIconColor="#ffffff"
/>
</template>
```
### 标题对齐方式
```vue
<template>
<!-- 标题居中显示默认 -->
<TopNavBar title="居中标题" titleAlign="center" />
<!-- 标题左对齐显示 -->
<TopNavBar title="左对齐标题" titleAlign="left" />
</template>
```
### 使用插槽
```vue
<template>
<TopNavBar>
<template #title>
<view class="custom-title">
<text>自定义标题内容</text>
</view>
</template>
<template #right>
<uni-icons type="more" size="20" color="#333" />
</template>
</TopNavBar>
</template>
```
## API
### Props
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| title | String | '' | 导航栏标题 |
| fixed | Boolean | false | 是否固定在页面顶部 |
| showBack | Boolean | true | 是否显示返回按钮 |
| backgroundColor | String | '#ffffff' | 背景颜色 |
| titleColor | String | '#333333' | 标题文字颜色 |
| backIconColor | String | '#333333' | 返回按钮图标颜色 |
| hideStatusBar | Boolean | false | 是否隐藏状态栏占位 |
| zIndex | Number | 999 | 层级索引 |
| titleAlign | String | 'center' | 标题对齐方式,可选值:'center'、'left' |
### Events
| 事件名 | 说明 | 参数 |
|--------|------|------|
| back | 点击返回按钮时触发 | - |
### Slots
| 插槽名 | 说明 |
|--------|------|
| title | 自定义标题内容 |
| right | 自定义右侧内容 |
## 使用示例
### 订单列表页面
```vue
<template>
<view>
<TopNavBar>
<template #title>
<Tabs
:tabs="tabList"
:defaultActive="currentTabIndex"
@change="handleTabChange"
/>
</template>
</TopNavBar>
<!-- 页面内容 -->
<view class="page-content">
<!-- 内容区域 -->
</view>
</view>
</template>
```
### 商品详情页面
```vue
<template>
<view>
<TopNavBar
title="商品详情"
:fixed="true"
@back="handleBack"
>
<template #right>
<uni-icons type="share" size="20" color="#333" />
</template>
</TopNavBar>
<!-- 页面内容 -->
<view class="page-content">
<!-- 内容区域 -->
</view>
</view>
</template>
<script setup>
const handleBack = () => {
// 自定义返回逻辑
console.log('自定义返回处理')
}
</script>
```
## 注意事项
1. **固定定位使用**:当设置 `fixed="true"` 时,组件会固定在页面顶部,此时需要为页面内容添加适当的顶部间距。
2. **状态栏适配**:组件会自动获取系统状态栏高度并进行适配,无需手动处理。
3. **返回按钮**:默认点击返回按钮会执行 `uni.navigateBack()`,如果需要自定义返回逻辑,请监听 `@back` 事件。
4. **样式覆盖**:如需自定义样式,建议通过 props 传入颜色值,或在父组件中使用深度选择器覆盖样式。
5. **插槽使用**title 插槽会完全替换默认的标题显示right 插槽用于添加右侧操作按钮。
## 更新日志
### v1.0.0
- 初始版本发布
- 支持基础导航栏功能
- 支持固定定位配置
- 支持自定义样式和插槽