buddhism/components/custom-navbar/README.md
2025-08-08 17:20:36 +08:00

171 lines
3.7 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.

# Custom Navbar 组件使用说明
## 功能特性
- 自动监听页面滚动
- 滚动时导航栏变为纯色背景
- 回到顶部时导航栏变为透明
- 支持自定义背景色和滚动阈值
- 提供滚动状态事件回调
## 基本用法
```vue
<template>
<view>
<custom-navbar title="页面标题" />
<!-- 页面内容 -->
</view>
</template>
```
## 高级用法
```vue
<template>
<view>
<custom-navbar
title="古刹巡礼"
:backgroundColor="'#FAF8F3'"
:scrollThreshold="100"
:enableScrollEffect="true"
@scroll-change="onScrollChange"
@scroll="onScroll"
>
<template #right>
<view class="right-button">更多</view>
</template>
</custom-navbar>
<!-- 页面内容 -->
</view>
</template>
<script>
export default {
methods: {
onScrollChange(data) {
console.log('滚动状态变化:', data.isScrolled);
},
onScroll(data) {
console.log('滚动位置:', data.scrollTop);
}
}
}
</script>
```
## Props 参数
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| title | String | '' | 导航栏标题 |
| backIcon | String | CommonEnum.BACK_BUTTON | 返回按钮图标 |
| showBack | Boolean | true | 是否显示返回按钮 |
| backgroundColor | String | '#ffffff' | 滚动时的背景色 |
| scrollThreshold | Number | 50 | 滚动阈值(像素) |
| enableScrollEffect | Boolean | true | 是否启用滚动效果 |
## Events 事件
| 事件名 | 参数 | 说明 |
|--------|------|------|
| back | - | 点击返回按钮时触发 |
| scroll-change | { isScrolled, scrollTop } | 滚动状态变化时触发 |
| scroll | { scrollTop, isScrolled } | 页面滚动时触发 |
## 方法
| 方法名 | 参数 | 说明 |
|--------|------|------|
| setScrollState | scrollTop | 手动设置滚动状态 |
## 样式定制
组件会自动添加以下 CSS 类:
- `.navbar-scrolled`: 滚动状态下的样式
- 过渡动画:背景色变化有 0.3s 的过渡效果
- 阴影效果:滚动时自动添加阴影
## 注意事项
1. **重要**:需要在父页面的 `onPageScroll` 生命周期中调用组件的 `handlePageScroll` 方法
2. 滚动效果默认启用,可通过 `enableScrollEffect` 关闭
3. 背景色变化有平滑过渡动画
4. 组件使用 `ref` 引用,确保在页面中正确引用
## 完整使用示例
### 方法一:使用 Mixin推荐
```vue
<template>
<view>
<custom-navbar
ref="customNavbar"
title="页面标题"
backgroundColor="#FAF8F3"
:scrollThreshold="50"
@scroll-change="onScrollChange"
/>
<!-- 页面内容 -->
</view>
</template>
<script>
import CustomNavbar from "@/components/custom-navbar/custom-navbar.vue";
import PageScrollMixin from "@/mixins/page-scroll-mixin.js";
export default {
mixins: [PageScrollMixin], // 自动处理滚动事件
components: {
CustomNavbar
},
methods: {
onScrollChange(data) {
console.log('滚动状态变化:', data.isScrolled);
}
}
}
</script>
```
### 方法二:手动处理
```vue
<template>
<view>
<custom-navbar
ref="customNavbar"
title="页面标题"
backgroundColor="#FAF8F3"
:scrollThreshold="50"
@scroll-change="onScrollChange"
/>
<!-- 页面内容 -->
</view>
</template>
<script>
import CustomNavbar from "@/components/custom-navbar/custom-navbar.vue";
export default {
components: {
CustomNavbar
},
// 页面生命周期 - 必须添加
onPageScroll(e) {
// 将页面滚动事件传递给导航栏组件
if (this.$refs.customNavbar) {
this.$refs.customNavbar.handlePageScroll(e);
}
},
methods: {
onScrollChange(data) {
console.log('滚动状态变化:', data.isScrolled);
}
}
}
</script>
```