First Commit
This commit is contained in:
359
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/仪表盘布局.md
Normal file
359
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/仪表盘布局.md
Normal file
@@ -0,0 +1,359 @@
|
||||
# 仪表盘布局
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考量](#性能考量)
|
||||
8. [故障排查指南](#故障排查指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本文件为“有维项目”的仪表盘页面提供全面的布局设计文档,面向UI设计师与前端开发者。内容涵盖整体布局架构、导航系统设计、内容区域划分、Tab导航机制、统计卡片网格、内容卡片布局、项目列表展示、交互设计、响应式断点与移动端适配、性能优化建议以及组件使用规范与定制化指南。文档以index.html中的HTML结构与内联样式为基础,结合JavaScript交互逻辑进行系统性梳理与可视化呈现。
|
||||
|
||||
## 项目结构
|
||||
项目采用单页应用(SPA)结构,通过CSS类控制页面切换与Tab切换,并在内联脚本中实现交互逻辑。页面主要由登录页、仪表盘页、AI智能体页三部分组成,每个页面包含统一的顶部导航栏与各自的内容区。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html"] --> B["登录页(login-page)"]
|
||||
A --> C["仪表盘页(dashboard-page)"]
|
||||
A --> D["AI智能体页(ai-page)"]
|
||||
C --> E["顶部导航栏(navbar)"]
|
||||
C --> F["内容区(dashboard-content)"]
|
||||
F --> G["Tab导航(tab-nav)"]
|
||||
F --> H["统计卡片网格(stats-grid)"]
|
||||
F --> I["内容卡片(content-card)"]
|
||||
F --> J["项目列表/网格(content-grid/membership-grid/ai-grid/course-grid)"]
|
||||
D --> K["顶部导航栏(navbar)"]
|
||||
D --> L["内容区(ai-content)"]
|
||||
L --> M["搜索与筛选(search-box/industry-filter)"]
|
||||
L --> N["AI卡片网格(ai-grid)"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1548-2735](file://index.html#L1548-L2735)
|
||||
|
||||
章节来源
|
||||
- [index.html:1548-2735](file://index.html#L1548-L2735)
|
||||
|
||||
## 核心组件
|
||||
- 页面容器与切换
|
||||
- 页面容器类.page与.active控制页面显隐与淡入动画。
|
||||
- JavaScript函数showPage负责切换页面。
|
||||
- 顶部导航栏
|
||||
- Logo系统、主导航菜单、通知系统、用户信息面板。
|
||||
- Tab导航系统
|
||||
- Tab按钮集合与对应内容区,激活状态管理与切换动画。
|
||||
- 统计卡片网格
|
||||
- 四列栅格布局,悬停提升与阴影变化。
|
||||
- 内容卡片与网格
|
||||
- 内容卡片容器、项目网格布局、项目卡片与交互。
|
||||
- 响应式断点
|
||||
- 针对1200px、768px的关键断点,调整网格列数与布局。
|
||||
- AI对话弹窗
|
||||
- 弹窗容器、消息列表、快捷问题、输入与发送。
|
||||
|
||||
章节来源
|
||||
- [index.html:41-49](file://index.html#L41-L49)
|
||||
- [index.html:426-523](file://index.html#L426-L523)
|
||||
- [index.html:544-584](file://index.html#L544-L584)
|
||||
- [index.html:587-633](file://index.html#L587-L633)
|
||||
- [index.html:634-710](file://index.html#L634-L710)
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:2411-2446](file://index.html#L2411-L2446)
|
||||
|
||||
## 架构总览
|
||||
仪表盘页面采用“页面级SPA + Tab级SPA”混合架构:
|
||||
- 页面级:登录页、仪表盘页、AI智能体页通过类.page与.active切换。
|
||||
- Tab级:仪表盘页内部的Tab导航用于切换不同业务板块内容。
|
||||
- 交互层:内联脚本集中处理页面切换、Tab切换、用户菜单、行业筛选、AI对话等。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant P as "页面切换(showPage)"
|
||||
participant D as "仪表盘页(dashboard-page)"
|
||||
participant A as "AI页(ai-page)"
|
||||
participant L as "登录页(login-page)"
|
||||
U->>P : 点击导航或登录提交
|
||||
P->>L : 隐藏其他页面
|
||||
P->>D : 显示仪表盘页
|
||||
P->>A : 显示AI页
|
||||
Note over D,A : 页面级切换完成
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:2452-2459](file://index.html#L2452-L2459)
|
||||
- [index.html:1625-1629](file://index.html#L1625-L1629)
|
||||
- [index.html:2232-2236](file://index.html#L2232-L2236)
|
||||
- [index.html:1555-1562](file://index.html#L1555-L1562)
|
||||
|
||||
章节来源
|
||||
- [index.html:2452-2459](file://index.html#L2452-L2459)
|
||||
- [index.html:1625-1629](file://index.html#L1625-L1629)
|
||||
- [index.html:2232-2236](file://index.html#L2232-L2236)
|
||||
- [index.html:1555-1562](file://index.html#L1555-L1562)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 顶部导航栏设计
|
||||
- Logo系统
|
||||
- 左侧Logo区域包含图标与品牌名,采用圆角与渐变背景增强识别度。
|
||||
- 主导航菜单
|
||||
- 中央主导航菜单包含“首页、AI智能体、学习中心、校友社群”,当前页面对应项高亮。
|
||||
- 通知系统
|
||||
- 右侧通知按钮带红点徽标,突出未读状态。
|
||||
- 用户信息面板
|
||||
- 用户头像点击展开下拉菜单,包含用户信息、菜单项与退出登录。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Navbar {
|
||||
+Logo
|
||||
+NavMenu
|
||||
+Notification
|
||||
+UserDropdown
|
||||
}
|
||||
class NavLogo {
|
||||
+Icon
|
||||
+BrandName
|
||||
}
|
||||
class NavMenu {
|
||||
+NavItem[]
|
||||
+ActiveItem
|
||||
}
|
||||
class Notification {
|
||||
+Badge
|
||||
}
|
||||
class UserDropdown {
|
||||
+Avatar
|
||||
+UserMenu
|
||||
}
|
||||
Navbar --> NavLogo : "包含"
|
||||
Navbar --> NavMenu : "包含"
|
||||
Navbar --> Notification : "包含"
|
||||
Navbar --> UserDropdown : "包含"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:426-523](file://index.html#L426-L523)
|
||||
|
||||
章节来源
|
||||
- [index.html:426-523](file://index.html#L426-L523)
|
||||
|
||||
### Tab导航系统实现原理
|
||||
- 结构组成
|
||||
- Tab按钮组与对应内容区,每个内容区通过id与按钮关联。
|
||||
- 激活状态管理
|
||||
- showTab函数移除所有按钮与内容的激活类,再为当前Tab设置激活状态。
|
||||
- 切换动画
|
||||
- 内容区使用fadeIn动画,Tab内容切换具备平滑过渡。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant BTN as "Tab按钮"
|
||||
participant TAB as "showTab()"
|
||||
participant CT as "Tab内容区"
|
||||
U->>BTN : 点击Tab按钮
|
||||
BTN->>TAB : 触发showTab(tabId)
|
||||
TAB->>CT : 移除所有激活类
|
||||
TAB->>CT : 为对应内容添加激活类
|
||||
CT-->>U : 显示新内容并播放fadeIn动画
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:2533-2550](file://index.html#L2533-L2550)
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
|
||||
章节来源
|
||||
- [index.html:2533-2550](file://index.html#L2533-L2550)
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
|
||||
### 统计卡片网格布局
|
||||
- 设计模式
|
||||
- 四列等宽栅格,卡片统一圆角、阴影与悬停提升效果。
|
||||
- 视觉反馈
|
||||
- 悬停时卡片轻微上浮与阴影增强,提供明确的交互反馈。
|
||||
- 数据密度
|
||||
- 每个卡片包含图标、数值与标签,信息层次清晰。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["进入平台概览Tab"]) --> Grid["渲染四列统计网格"]
|
||||
Grid --> Hover{"鼠标悬停卡片?"}
|
||||
Hover --> |是| Lift["卡片上浮 + 阴影增强"]
|
||||
Hover --> |否| Normal["恢复默认样式"]
|
||||
Lift --> Hover
|
||||
Normal --> Hover
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:587-633](file://index.html#L587-L633)
|
||||
|
||||
章节来源
|
||||
- [index.html:587-633](file://index.html#L587-L633)
|
||||
|
||||
### 内容卡片布局策略与项目列表展示
|
||||
- 布局策略
|
||||
- 内容卡片采用统一圆角、阴影与内边距,标题、描述与网格内容分层组织。
|
||||
- 项目列表展示
|
||||
- 使用网格布局展示课程、AI卡片、会员方案、活动与心声等,支持响应式列数调整。
|
||||
- 交互设计
|
||||
- 卡片hover产生位移动画与阴影变化,增强可点击性;按钮与标签提供明确操作入口。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
CC["内容卡片"] --> H2["标题"]
|
||||
CC --> Desc["描述"]
|
||||
CC --> Grid["网格布局"]
|
||||
Grid --> Item["项目卡片"]
|
||||
Item --> Icon["图标"]
|
||||
Item --> Title["标题"]
|
||||
Item --> Text["文本"]
|
||||
Item --> List["列表/特征"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:634-710](file://index.html#L634-L710)
|
||||
- [index.html:824-877](file://index.html#L824-L877)
|
||||
- [index.html:1083-1176](file://index.html#L1083-L1176)
|
||||
- [index.html:1701-1740](file://index.html#L1701-L1740)
|
||||
|
||||
章节来源
|
||||
- [index.html:634-710](file://index.html#L634-L710)
|
||||
- [index.html:824-877](file://index.html#L824-L877)
|
||||
- [index.html:1083-1176](file://index.html#L1083-L1176)
|
||||
- [index.html:1701-1740](file://index.html#L1701-L1740)
|
||||
|
||||
### 响应式断点与移动端适配
|
||||
- 关键断点
|
||||
- 1200px:登录页内容改为纵向堆叠,统计、内容、AI网格列数减少。
|
||||
- 768px:导航菜单隐藏,内容区左右内边距减小,网格列数进一步压缩至1列,Tab横向滚动。
|
||||
- 移动端体验
|
||||
- 弹窗尺寸自适应,输入框随内容自动增高,确保触控友好。
|
||||
- 下拉菜单与行业筛选在移动端保持可点击与可关闭行为。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
View["视口宽度"] --> W1200{"≤ 1200px?"}
|
||||
W1200 --> |是| C1200["登录页堆叠<br/>网格列数减少"]
|
||||
W1200 --> |否| W768{"≤ 768px?"}
|
||||
W768 --> |是| C768["导航隐藏<br/>网格1列<br/>Tab横向滚动"]
|
||||
W768 --> |否| Desktop["桌面端布局"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
|
||||
章节来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
|
||||
### 性能优化建议
|
||||
- 图片与图标
|
||||
- 使用emoji或SVG图标减少HTTP请求,避免外部资源加载阻塞。
|
||||
- 动画与过渡
|
||||
- 合理使用transform与opacity属性触发GPU加速,避免频繁重排。
|
||||
- DOM访问
|
||||
- 将频繁查询的DOM节点缓存,减少重复查询与计算。
|
||||
- 事件委托
|
||||
- 在容器上绑定事件监听,减少事件处理器数量。
|
||||
- 懒加载
|
||||
- 对于长列表或图片,考虑懒加载策略以降低首屏压力。
|
||||
- 缓存策略
|
||||
- 对静态资源启用浏览器缓存,减少重复下载。
|
||||
|
||||
## 依赖关系分析
|
||||
- 页面级依赖
|
||||
- 三个页面共享同一导航栏结构,但内容区不同。
|
||||
- Tab级依赖
|
||||
- 仪表盘页内部的Tab按钮与内容区存在一一对应关系,通过函数参数关联。
|
||||
- 交互依赖
|
||||
- 用户菜单、行业筛选、AI对话弹窗均依赖全局脚本函数与DOM操作。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "页面"
|
||||
LP["登录页(login-page)"]
|
||||
DP["仪表盘页(dashboard-page)"]
|
||||
AP["AI页(ai-page)"]
|
||||
end
|
||||
subgraph "公共组件"
|
||||
NB["导航栏(navbar)"]
|
||||
UM["用户菜单(user-menu)"]
|
||||
IF["行业筛选(industry-filter)"]
|
||||
CM["聊天弹窗(chat-modal)"]
|
||||
end
|
||||
DP --> NB
|
||||
AP --> NB
|
||||
NB --> UM
|
||||
AP --> IF
|
||||
DP --> CM
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1625-1659](file://index.html#L1625-L1659)
|
||||
- [index.html:2232-2266](file://index.html#L2232-L2266)
|
||||
- [index.html:2411-2446](file://index.html#L2411-L2446)
|
||||
|
||||
章节来源
|
||||
- [index.html:1625-1659](file://index.html#L1625-L1659)
|
||||
- [index.html:2232-2266](file://index.html#L2232-L2266)
|
||||
- [index.html:2411-2446](file://index.html#L2411-L2446)
|
||||
|
||||
## 性能考量
|
||||
- 渲染性能
|
||||
- 使用CSS transform与opacity实现动画,避免影响布局与绘制性能。
|
||||
- 交互性能
|
||||
- 事件监听集中在容器上,减少事件冒泡与捕获成本。
|
||||
- 资源加载
|
||||
- 减少外部依赖,优先使用系统字体与内联样式,缩短关键渲染路径。
|
||||
- 可访问性
|
||||
- 提供键盘导航支持,确保Tab索引顺序合理,按钮具备可聚焦状态。
|
||||
|
||||
## 故障排查指南
|
||||
- 页面无法切换
|
||||
- 检查showPage函数调用是否正确传入页面ID,确认对应元素存在且类名拼写一致。
|
||||
- Tab不生效
|
||||
- 确认showTab函数中按钮与内容区的id匹配,检查active类移除与添加逻辑。
|
||||
- 用户菜单不关闭
|
||||
- 检查closeAllMenus与点击外部关闭逻辑,确保事件监听绑定正确。
|
||||
- 行业筛选无效
|
||||
- 确认filterByIndustry与toggleIndustryMore函数调用,检查下拉菜单开关状态。
|
||||
- 聊天弹窗异常
|
||||
- 检查openChat与closeChat函数,确认模态框类名切换与消息列表初始化。
|
||||
|
||||
章节来源
|
||||
- [index.html:2452-2459](file://index.html#L2452-L2459)
|
||||
- [index.html:2533-2550](file://index.html#L2533-L2550)
|
||||
- [index.html:2510-2522](file://index.html#L2510-L2522)
|
||||
- [index.html:2564-2583](file://index.html#L2564-L2583)
|
||||
- [index.html:2645-2666](file://index.html#L2645-L2666)
|
||||
|
||||
## 结论
|
||||
该仪表盘布局以简洁清晰的栅格系统与统一的视觉语言为核心,结合页面级与Tab级的双层SPA架构,实现了良好的可维护性与扩展性。通过合理的响应式断点与交互细节,兼顾了桌面端与移动端的用户体验。建议在后续迭代中引入更完善的可访问性支持与模块化脚本组织,以进一步提升长期可维护性。
|
||||
|
||||
## 附录
|
||||
- 组件使用规范
|
||||
- 页面切换:使用showPage(pageId),确保页面ID与HTML元素一致。
|
||||
- Tab切换:使用showTab(tabId),按钮文本需与映射表一致。
|
||||
- 用户菜单:通过toggleUserMenu(menuId)控制展开与收起。
|
||||
- 行业筛选:filterByIndustry(btn, industry)与toggleIndustryMore(btn)配合使用。
|
||||
- 聊天弹窗:openChat(name, icon, bgColor)初始化并打开,closeChat()关闭。
|
||||
- 定制化指南
|
||||
- 颜色主题:通过CSS变量统一管理主色、辅助色与阴影,便于主题切换。
|
||||
- 布局密度:根据业务需要调整网格列数与卡片间距,保持视觉平衡。
|
||||
- 动效节奏:统一动画时长与缓动曲线,确保交互一致性。
|
||||
|
||||
章节来源
|
||||
- [index.html:2448-2732](file://index.html#L2448-L2732)
|
||||
Reference in New Issue
Block a user