# 侧边栏导航系统设计方案 **项目名称**: 制度文件管理学习AI智能体 - 前端优化 **设计日期**: 2026-05-14 **版本**: v1.0 **状态**: 已批准 --- ## 1. 设计背景与目标 ### 1.1 当前问题 现有系统采用**顶部水平导航栏**布局,存在以下问题: - **空间利用率低**: 7 个功能模块占用顶部空间,在宽屏显示器上浪费水平空间 - **可扩展性差**: 新增功能模块会导致顶部导航拥挤 - **视觉层级不清晰**: 系统标题、导航、用户信息混在同一行,缺乏层次感 - **移动端体验差**: 水平导航在小屏幕上需要滚动或换行 ### 1.2 设计目标 将现有的顶部 header 导航重构为**左侧固定侧边栏**系统,实现: 1. **提升空间利用率**: 垂直导航释放顶部和水平空间 2. **增强可扩展性**: 支持更多功能模块而不影响布局 3. **改善视觉层级**: 清晰分离品牌区、导航区、用户区 4. **优化响应式体验**: 桌面/平板/移动端均有最佳表现 5. **保持一致性**: 遵循已有的白色体系设计规范 --- ## 2. 设计决策记录 ### 2.1 关键选择 | 决策项 | 选择 | 理由 | |-------|------|------| | **侧边栏位置** | 左侧 | 符合主流商业系统习惯(VS Code、Notion、Slack) | | **标题与用户信息位置** | 侧边栏内 | 整体感强,减少页面元素碎片化 | | **默认宽度规格** | 展开时 200px / 收起时 56px | 紧凑型设计,最大化主内容区空间 | | **实现方案** | 方案 A:经典固定侧边栏 | 实现简单、性能优、符合企业级应用标准 | ### 2.2 未采用的替代方案 - **方案 B(可拖拽调整宽度)**: 实现复杂度高,当前需求不需要此功能 - **方案 C(全响应式混合导航)**: 过度工程化,增加维护成本 - **右侧边栏**: 不符合用户阅读习惯(从左到右) --- ## 3. 整体布局架构 ### 3.1 布局结构图 ``` 桌面端(≥768px): ┌─────────────────────────────────────────────────────┐ │ │ │ ┌──────────┬──────────────────────────────────┐ │ │ │ │ │ │ │ │ 侧边栏 │ 主内容区域 │ │ │ │ (200px) │ (剩余所有空间) │ │ │ │ │ │ │ │ │ [品牌区] │ - ReadModule │ │ │ │ [导航项] │ - ManageModule │ │ │ │ [用户区] │ - QAModule │ │ │ │ │ - ExamModule │ │ │ └──────────┴──────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────┘ 收起状态(56px): ┌────────┬───────────────────────────────────────────┐ │ │ │ │ 56px │ 主内容区域 │ │ │ (宽度 = 视口宽度 - 56px) │ │ 图标 │ │ │ 仅显示 │ │ └────────┴───────────────────────────────────────────┘ 移动端(<768px): ┌──────────────────────────┐ │ ☰ 制度文件管理学习AI智能体 │ ← 顶部栏(固定,48px高) ├──────────────────────────┤ │ │ │ │ │ 主内容区域 │ ← 全屏显示 │ │ │ │ └──────────────────────────┘ 点击 ☰ 后(Overlay模式): ┌────┬─────────────────────┐ │ │ ✕ │ │ 侧 │ │ │ 边 │ 主内容区(暗化) │ │ 栏 │ │ │ │ │ └────┴─────────────────────┘ ``` ### 3.2 技术实现要点 - **布局方式**: Flexbox(外层容器 `display: flex`) - **侧边栏定位**: 固定定位或正常流(`flex-shrink: 0`) - **主内容区**: `flex: 1; overflow: auto` - **高度控制**: 侧边栏 `height: 100vh` --- ## 4. 侧边栏内部组件设计 ### 4.1 组件架构 ``` AppSidebar.vue (主容器) ├── SidebarHeader.vue (品牌区) │ ├── Logo/图标 │ ├── 系统名称 │ └── 折叠按钮 ├── SidebarNav.vue (导航菜单) │ └── SidebarNavItem.vue × N (单个导航项) │ ├── 图标 │ ├── 文字标签 │ └── Tooltip (收起状态) ├──