First Commit
This commit is contained in:
223
有维项目/.qoder/repowiki/zh/content/用户界面设计/主题系统.md
Normal file
223
有维项目/.qoder/repowiki/zh/content/用户界面设计/主题系统.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# 主题系统
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考量](#性能考量)
|
||||
8. [故障排查指南](#故障排查指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本文件面向“有维项目”的主题系统设计,聚焦于CSS自定义属性(CSS变量)的架构与使用、主色调系统(紫色系、绿色系、蓝色系)、渐变色彩理念与实现、阴影系统与视觉层次、颜色变量的组织与语义化命名、主题定制与动态切换方案、以及无障碍与可访问性优化建议。文档同时提供面向设计师与开发者的使用指南与扩展方案。
|
||||
|
||||
## 项目结构
|
||||
本项目采用单页应用结构,主题系统集中于页面头部的样式块中,通过CSS变量在全局生效,并在各组件类名中按需引用。页面包含登录页、仪表盘页、AI智能体页等,主题变量贯穿所有页面与组件。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Root[":root<br/>CSS变量定义"] --> Body[":root 下的 body"]
|
||||
Root --> LoginPage[".login-page"]
|
||||
Root --> Dashboard[".dashboard-page"]
|
||||
Root --> AIPage[".ai-page"]
|
||||
Root --> Components["通用组件类名<br/>如 .user-menu/.stat-card/.ai-card 等"]
|
||||
Components --> VarRef["var(--xxx) 引用"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 核心组件
|
||||
- CSS变量层:在页面根节点集中定义主色、辅助色、文本色、背景色、边框色、渐变与阴影等变量,统一主题语义。
|
||||
- 组件层:各页面与组件类名直接引用变量,形成一致的视觉风格与交互反馈。
|
||||
- 动态行为层:脚本负责页面切换、菜单开关、表单交互、聊天窗口等,但未涉及主题变量的动态切换。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 架构总览
|
||||
主题系统采用“变量集中定义 + 类名按需引用”的架构,确保:
|
||||
- 变量集中管理,便于统一修改与扩展;
|
||||
- 组件解耦,通过变量引用实现主题一致性;
|
||||
- 渐进增强,可在不破坏现有结构的前提下引入新变量或新组件。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "变量层"
|
||||
V1["主色系<br/>--primary-color/--primary-light/--primary-dark"]
|
||||
V2["辅助色系<br/>--secondary-color/--accent-color"]
|
||||
V3["文本与背景<br/>--text-primary/--text-secondary/--bg-color/--card-bg"]
|
||||
V4["边框与分隔<br/>--border-color"]
|
||||
V5["渐变<br/>--gradient-1/--gradient-2"]
|
||||
V6["阴影<br/>--shadow-sm/--shadow-md/--shadow-lg/--shadow-xl"]
|
||||
end
|
||||
subgraph "组件层"
|
||||
C1[".login-page/.login-form-container"]
|
||||
C2[".dashboard-page/.navbar/.tab-nav"]
|
||||
C3[".ai-page/.ai-card/.chat-modal"]
|
||||
C4["通用组件<br/>.user-menu/.stat-card/.membership-card 等"]
|
||||
end
|
||||
V1 --> C1
|
||||
V1 --> C2
|
||||
V1 --> C3
|
||||
V1 --> C4
|
||||
V2 --> C1
|
||||
V2 --> C2
|
||||
V2 --> C3
|
||||
V2 --> C4
|
||||
V3 --> C1
|
||||
V3 --> C2
|
||||
V3 --> C3
|
||||
V3 --> C4
|
||||
V4 --> C1
|
||||
V4 --> C2
|
||||
V4 --> C3
|
||||
V4 --> C4
|
||||
V5 --> C1
|
||||
V5 --> C2
|
||||
V5 --> C3
|
||||
V5 --> C4
|
||||
V6 --> C1
|
||||
V6 --> C2
|
||||
V6 --> C3
|
||||
V6 --> C4
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### CSS变量与命名规范
|
||||
- 命名采用语义化前缀:主色、辅助色、文本、背景、边框、渐变、阴影等,便于识别与维护。
|
||||
- 颜色变量按系列分组:主色系(主色、浅主色、深主色)、辅助色系(二级色、强调色)、文本与背景、边框色。
|
||||
- 渐变变量采用序号区分用途;阴影变量按层级递增,体现视觉深度。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 主色调系统:紫色系、绿色系、蓝色系
|
||||
- 紫色系:用于品牌主色与强调,如登录页背景、导航高亮、统计图标等。
|
||||
- 绿色系:用于积极与成功的状态,如课程图标、功能特性图标、按钮强调等。
|
||||
- 蓝色系:用于信息与辅助功能,如AI卡片、聊天区域等。
|
||||
- 使用模式:主色用于重要交互与高亮;浅主色用于悬停与焦点;深主色用于强调与选中态;二级色用于次要状态;强调色用于特殊提示。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 渐变色彩设计理念与实现
|
||||
- 设计理念:渐变用于强化品牌主色与营造科技感,常用于登录背景、按钮、头像、聊天区域等。
|
||||
- 实现方式:通过CSS变量定义线性渐变,组件中直接引用变量,保证一致性与可替换性。
|
||||
- 视觉效果:渐变在不同组件中呈现不同的强调程度,既保持统一又避免单调。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 阴影系统:多层级阴影、投影深度与视觉层次
|
||||
- 层级划分:sm/md/lg/xl四个层级,分别对应轻微浮层、卡片、面板、模态框等不同视觉深度。
|
||||
- 应用策略:导航栏、卡片、菜单、模态框等根据层级选择合适阴影,形成清晰的视觉层次。
|
||||
- 交互反馈:按钮悬停、卡片悬浮等过渡动效配合阴影变化,增强可用性。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 颜色变量的组织结构、语义化命名与维护策略
|
||||
- 组织结构:将颜色变量按功能域分组,减少跨域依赖,降低维护成本。
|
||||
- 语义化命名:以功能与用途命名,如主色、文本、背景、边框、渐变、阴影等,避免仅以颜色直译命名。
|
||||
- 维护策略:新增变量遵循命名规范;变更主色时,通过修改根节点变量即可全局生效;对组件进行主题适配时,优先使用变量而非硬编码颜色。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 主题定制、动态主题切换与用户偏好保存
|
||||
- 当前实现:页面通过CSS变量实现静态主题,未包含JavaScript动态切换与用户偏好持久化。
|
||||
- 实现建议(概念性方案):
|
||||
- 在根节点增加主题类或自定义属性,通过脚本切换;
|
||||
- 将用户偏好的主题值存储在本地存储中,页面加载时恢复;
|
||||
- 提供主题选择器,支持明暗/多色系切换;
|
||||
- 为关键变量提供映射表,便于批量替换。
|
||||
- 注意事项:动态切换时需同步更新渐变、阴影与边框变量,确保视觉一致性。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["开始"]) --> Detect["检测用户偏好"]
|
||||
Detect --> HasPref{"存在偏好?"}
|
||||
HasPref --> |是| Apply["应用偏好主题"]
|
||||
HasPref --> |否| Default["应用默认主题"]
|
||||
Apply --> UpdateRoot["更新根节点变量/类"]
|
||||
Default --> UpdateRoot
|
||||
UpdateRoot --> Persist["持久化用户偏好"]
|
||||
Persist --> End(["结束"])
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 无障碍与可访问性优化
|
||||
- 色彩对比度:确保文本与背景、按钮与背景、图标与背景之间满足对比度要求,提升阅读与操作体验。
|
||||
- 交互可见性:为焦点状态、悬停状态、选中状态提供明确的视觉反馈,避免仅依赖颜色区分。
|
||||
- 渐变与对比:渐变背景上的文字与图标需额外注意对比度,必要时添加遮罩或调整透明度。
|
||||
- 低对比度模式:可提供低对比度或高对比度主题选项,满足不同用户需求。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 依赖关系分析
|
||||
- 变量依赖:组件类名普遍依赖根节点变量,形成强关联;变量变更直接影响多个组件外观。
|
||||
- 组件耦合:组件间通过变量解耦,避免硬编码颜色导致的重复修改。
|
||||
- 外部依赖:项目未引入外部UI库或主题框架,主题系统完全由原生CSS变量实现。
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Var["CSS变量"] --> Comp1[".login-page/.login-form-container"]
|
||||
Var --> Comp2[".dashboard-page/.navbar/.tab-nav"]
|
||||
Var --> Comp3[".ai-page/.ai-card/.chat-modal"]
|
||||
Var --> Comp4["通用组件类名"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 性能考量
|
||||
- CSS变量的优势:集中管理、运行时替换成本低、体积小、兼容性良好。
|
||||
- 渐变与阴影:合理使用渐变与阴影可提升视觉层次,但需避免过度叠加导致渲染压力。
|
||||
- 组件数量与复杂度:组件数量较多时,建议拆分变量定义与组件样式,便于按需加载与缓存。
|
||||
|
||||
## 故障排查指南
|
||||
- 变量未生效:检查变量是否在根节点定义且拼写正确;确认组件类名是否正确引用变量。
|
||||
- 渐变显示异常:检查渐变参数与颜色值是否符合语法;确认容器尺寸与背景覆盖范围。
|
||||
- 阴影层级错位:核对阴影变量层级与组件层级是否匹配;检查z-index与定位上下文。
|
||||
- 无障碍问题:使用对比度检测工具验证文本与背景的对比度;测试键盘导航与焦点可见性。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 结论
|
||||
本主题系统以CSS变量为核心,实现了主色调、渐变与阴影的统一管理,具备良好的可维护性与扩展性。建议后续引入动态主题切换与用户偏好持久化机制,并完善无障碍与对比度优化,以进一步提升用户体验与可访问性。
|
||||
|
||||
## 附录
|
||||
- 变量清单(示例)
|
||||
- 主色系:--primary-color、--primary-light、--primary-dark
|
||||
- 辅助色系:--secondary-color、--accent-color
|
||||
- 文本与背景:--text-primary、--text-secondary、--bg-color、--card-bg
|
||||
- 边框与分隔:--border-color
|
||||
- 渐变:--gradient-1、--gradient-2
|
||||
- 阴影:--shadow-sm、--shadow-md、--shadow-lg、--shadow-xl
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
333
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/Tab导航系统.md
Normal file
333
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/Tab导航系统.md
Normal file
@@ -0,0 +1,333 @@
|
||||
# Tab导航系统
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考量](#性能考量)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本文件针对有维项目的Tab导航系统进行全面技术文档梳理,涵盖实现原理、样式设计、激活状态管理、JavaScript切换逻辑、CSS动画效果与用户体验优化、内容区域显示隐藏机制与过渡动画、响应式适配与移动端交互、样式自定义与主题配置、可访问性设计以及扩展指南。文档面向不同技术背景的读者,既提供高层架构视图,也包含代码级细节与可视化图表。
|
||||
|
||||
## 项目结构
|
||||
该系统位于单一HTML文件中,采用内联CSS与内联JavaScript的方式实现,Tab导航位于仪表盘页面的导航栏下方,由一组按钮构成导航条,并对应多个内容区域。页面整体采用类名驱动的DOM结构,通过JavaScript控制激活状态与内容显示。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html"] --> B["全局样式与变量"]
|
||||
A --> C["仪表盘页面"]
|
||||
C --> D["Tab导航容器(.tab-nav)"]
|
||||
D --> E["Tab按钮(.tab-btn)"]
|
||||
C --> F["Tab内容区(.tab-content)"]
|
||||
F --> G["平台概览(#overview)"]
|
||||
F --> H["有维教育(#education)"]
|
||||
F --> I["AI工具(#ai-tools)"]
|
||||
F --> J["有维校友(#alumni)"]
|
||||
F --> K["会员体系(#membership)"]
|
||||
A --> L["JavaScript逻辑"]
|
||||
L --> M["showTab(tabId)"]
|
||||
L --> N["激活状态管理"]
|
||||
L --> O["内容显示隐藏"]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:1667-1674](file://index.html#L1667-L1674)
|
||||
- [index.html:1676-2228](file://index.html#L1676-L2228)
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:1667-1674](file://index.html#L1667-L1674)
|
||||
- [index.html:1676-2228](file://index.html#L1676-L2228)
|
||||
|
||||
## 核心组件
|
||||
- Tab导航容器:用于承载所有Tab按钮,提供统一的布局与阴影效果。
|
||||
- Tab按钮:每个按钮代表一个Tab页签,包含悬停与激活状态样式。
|
||||
- Tab内容区:与按钮一一对应的内容块,初始仅显示激活项,其余隐藏。
|
||||
- JavaScript控制器:负责按钮激活状态切换、内容显示隐藏、Tab名称映射。
|
||||
|
||||
关键样式与行为:
|
||||
- 激活状态:按钮与内容区同时应用“active”类名,实现视觉同步。
|
||||
- 动画过渡:内容区切换时应用淡入动画,提升用户体验。
|
||||
- 响应式适配:在小屏设备上允许横向滚动,避免按钮溢出。
|
||||
|
||||
**章节来源**
|
||||
- [index.html:544-584](file://index.html#L544-L584)
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
|
||||
## 架构总览
|
||||
Tab导航系统采用“按钮-内容区”双层结构,通过JavaScript集中控制激活状态与显示隐藏。整体架构简洁清晰,便于扩展与维护。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "UI层"
|
||||
TNav[".tab-nav 容器"]
|
||||
Btns[".tab-btn 按钮集合"]
|
||||
Content[".tab-content 内容集合"]
|
||||
end
|
||||
subgraph "控制层"
|
||||
JS["JavaScript 控制器"]
|
||||
end
|
||||
subgraph "样式层"
|
||||
CSS["CSS 样式与动画"]
|
||||
end
|
||||
TNav --> Btns
|
||||
TNav --> Content
|
||||
Btns --> JS
|
||||
Content --> JS
|
||||
JS --> CSS
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:544-584](file://index.html#L544-L584)
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### Tab导航容器与按钮
|
||||
- 容器样式:提供圆角背景、阴影、按钮间距与整体布局。
|
||||
- 按钮样式:默认浅色文字,悬停变深色与浅背景;激活时变为强调色背景与白色文字。
|
||||
- 激活状态:通过“active”类名控制,确保按钮与内容区一致。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class TabNav {
|
||||
+容器样式
|
||||
+圆角背景
|
||||
+阴影
|
||||
+按钮间距
|
||||
}
|
||||
class TabButton {
|
||||
+默认样式
|
||||
+悬停效果
|
||||
+激活样式
|
||||
+点击事件
|
||||
}
|
||||
TabNav --> TabButton : "包含"
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:544-575](file://index.html#L544-L575)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:544-575](file://index.html#L544-L575)
|
||||
|
||||
### Tab内容区与动画
|
||||
- 内容区默认隐藏,仅激活项显示。
|
||||
- 切换时应用淡入动画,提升视觉连贯性。
|
||||
- 在小屏设备上,Tab导航容器启用横向滚动,避免按钮溢出。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["点击Tab按钮"]) --> RemoveActive["移除所有按钮的active类"]
|
||||
RemoveActive --> HideAll["隐藏所有内容区"]
|
||||
HideAll --> ActivateBtn["为对应按钮添加active类"]
|
||||
ActivateBtn --> ShowContent["显示对应内容区"]
|
||||
ShowContent --> Animate["应用淡入动画"]
|
||||
Animate --> End(["完成"])
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
- [index.html:1537-1544](file://index.html#L1537-L1544)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
- [index.html:1537-1544](file://index.html#L1537-L1544)
|
||||
|
||||
### JavaScript切换逻辑
|
||||
- showTab(tabId):统一入口,负责移除旧状态、添加新状态、显示对应内容。
|
||||
- getTabName(tabId):将内部ID映射为显示文本,辅助按钮激活判断。
|
||||
- 事件绑定:按钮直接调用onclick,传入对应内容区ID。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant BTN as "Tab按钮(.tab-btn)"
|
||||
participant JS as "showTab()"
|
||||
participant DOM as "DOM元素"
|
||||
participant ANI as "动画"
|
||||
U->>BTN : 点击
|
||||
BTN->>JS : 传入tabId
|
||||
JS->>DOM : 移除所有按钮active
|
||||
JS->>DOM : 隐藏所有内容区
|
||||
JS->>DOM : 为对应按钮添加active
|
||||
JS->>DOM : 显示对应内容区
|
||||
DOM->>ANI : 应用淡入动画
|
||||
ANI-->>U : 视觉反馈
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:1669-1674](file://index.html#L1669-L1674)
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
|
||||
### 激活状态管理
|
||||
- 双向同步:按钮与内容区同时应用“active”,保证视觉一致性。
|
||||
- 名称映射:通过getTabName(tabId)将内部ID转换为按钮文本,用于精确匹配并激活对应按钮。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["传入tabId"] --> B["getTabName(tabId)"]
|
||||
B --> C{"按钮文本是否包含名称?"}
|
||||
C --> |是| D["为该按钮添加active"]
|
||||
C --> |否| E["继续遍历下一个按钮"]
|
||||
D --> F["显示对应内容区"]
|
||||
E --> C
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:2552-2562](file://index.html#L2552-L2562)
|
||||
- [index.html:2533-2550](file://index.html#L2533-L2550)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:2552-2562](file://index.html#L2552-L2562)
|
||||
- [index.html:2533-2550](file://index.html#L2533-L2550)
|
||||
|
||||
### 内容区域显示隐藏机制
|
||||
- 默认隐藏:未激活的内容区display为none。
|
||||
- 激活显示:对应内容区添加active类,display变为block。
|
||||
- 动画过渡:配合CSS动画实现平滑切换。
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> 隐藏
|
||||
隐藏 --> 显示 : "添加active类"
|
||||
显示 --> 隐藏 : "移除active类"
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
|
||||
### 响应式适配与移动端交互
|
||||
- 横向滚动:小屏设备下,Tab导航容器启用overflow-x: auto,避免按钮溢出。
|
||||
- 触摸交互:容器具备滚动能力,满足移动端滑动切换需求。
|
||||
- 其他组件:页面整体在768px以下进行网格布局与间距调整,确保在小屏下的可用性。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Small["屏幕宽度 ≤ 768px"] --> Scroll["Tab容器启用横向滚动"]
|
||||
Small --> Grid["网格布局调整"]
|
||||
Scroll --> UX["更好的移动端体验"]
|
||||
Grid --> UX
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:1537-1544](file://index.html#L1537-L1544)
|
||||
- [index.html:1492-1545](file://index.html#L1492-L1545)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:1537-1544](file://index.html#L1537-L1544)
|
||||
- [index.html:1492-1545](file://index.html#L1492-L1545)
|
||||
|
||||
### 样式自定义与主题配置
|
||||
- CSS变量:通过:root定义主题色值,便于统一替换主色调与辅助色。
|
||||
- 按钮状态:默认、悬停、激活三态样式分离,易于按需修改。
|
||||
- 动画参数:淡入动画时长与缓动曲线可按需调整。
|
||||
|
||||
建议的自定义点:
|
||||
- 主题色:修改:root中的颜色变量,影响按钮激活色、渐变背景等。
|
||||
- 字体与字号:调整按钮字体大小与字重,适配不同品牌风格。
|
||||
- 圆角与阴影:根据品牌规范调整圆角半径与阴影强度。
|
||||
|
||||
**章节来源**
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:544-575](file://index.html#L544-L575)
|
||||
|
||||
### 可访问性设计与键盘操作
|
||||
- 现状:Tab按钮使用button元素,具备基本可聚焦性;但未显式设置aria标签或键盘事件绑定。
|
||||
- 建议增强:
|
||||
- 为按钮添加role="tab"、aria-selected、aria-controls等ARIA属性。
|
||||
- 支持键盘方向键切换与Enter/Space激活。
|
||||
- 为内容区添加role="tabpanel"与aria-labelledby关联。
|
||||
- 提供焦点可见性与键盘导航提示。
|
||||
|
||||
[本节为通用可访问性建议,不直接分析具体文件,故无章节来源]
|
||||
|
||||
### 扩展指南与二次开发参考
|
||||
- 新增Tab页:在HTML中添加新的按钮与内容区,确保ID与按钮文本一致。
|
||||
- 自定义动画:修改CSS动画时长与缓动函数,或引入更复杂的过渡效果。
|
||||
- 交互增强:在JavaScript中扩展showTab,增加回调钩子或状态持久化。
|
||||
- 多语言支持:将按钮文本从HTML抽离至数据源,结合getTabName实现动态文案。
|
||||
|
||||
**章节来源**
|
||||
- [index.html:1669-1674](file://index.html#L1669-L1674)
|
||||
- [index.html:2552-2562](file://index.html#L2552-L2562)
|
||||
|
||||
## 依赖关系分析
|
||||
- HTML结构依赖:按钮与内容区通过ID与文本进行逻辑关联。
|
||||
- 样式依赖:按钮与内容区的激活状态依赖于CSS类名与动画。
|
||||
- JavaScript依赖:showTab依赖DOM查询与类名操作,依赖getTabName进行名称映射。
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
HTML["HTML结构"] --> JS["JavaScript"]
|
||||
CSS["CSS样式"] --> JS
|
||||
JS --> DOM["DOM操作"]
|
||||
DOM --> HTML
|
||||
DOM --> CSS
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [index.html:1669-1674](file://index.html#L1669-L1674)
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
- [index.html:544-584](file://index.html#L544-L584)
|
||||
|
||||
**章节来源**
|
||||
- [index.html:1669-1674](file://index.html#L1669-L1674)
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
- [index.html:544-584](file://index.html#L544-L584)
|
||||
|
||||
## 性能考量
|
||||
- DOM查询:每次切换都会对所有按钮与内容区进行查询,建议在初始化时缓存节点集合。
|
||||
- 动画:淡入动画开销较小,但在大量内容区时仍需注意渲染性能。
|
||||
- 响应式:小屏滚动不会造成额外负担,但需避免在滚动过程中频繁重排。
|
||||
|
||||
优化建议:
|
||||
- 缓存querySelectorAll结果,减少重复查询。
|
||||
- 使用requestAnimationFrame控制动画帧,避免阻塞主线程。
|
||||
- 将动画时长与缓动参数统一管理,便于性能调优。
|
||||
|
||||
[本节提供通用性能建议,不直接分析具体文件,故无章节来源]
|
||||
|
||||
## 故障排除指南
|
||||
- 按钮无法激活:检查按钮文本是否与getTabName返回值一致,确认ID与按钮文本匹配。
|
||||
- 内容区不显示:确认对应内容区存在且ID正确,检查active类是否正确添加。
|
||||
- 动画无效:检查CSS动画定义是否存在,确认内容区初始display为none。
|
||||
- 小屏溢出:确认Tab容器是否启用了overflow-x: auto。
|
||||
|
||||
排查步骤:
|
||||
- 打开浏览器开发者工具,检查元素类名与样式。
|
||||
- 在控制台调用showTab(tabId),观察DOM变化。
|
||||
- 查看控制台是否有JavaScript错误。
|
||||
|
||||
**章节来源**
|
||||
- [index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
- [index.html:577-584](file://index.html#L577-L584)
|
||||
- [index.html:1537-1544](file://index.html#L1537-L1544)
|
||||
|
||||
## 结论
|
||||
有维项目的Tab导航系统以简洁的HTML结构与内联JavaScript实现,具备良好的可读性与可扩展性。通过CSS类名与动画实现状态同步与平滑过渡,配合响应式设计在移动端提供良好体验。建议在未来版本中增强可访问性与键盘支持,并对JavaScript进行性能优化与可测试性改进。
|
||||
|
||||
## 附录
|
||||
- 快速定位:
|
||||
- Tab导航容器:[index.html:1667-1674](file://index.html#L1667-L1674)
|
||||
- Tab按钮与内容区:[index.html:1676-2228](file://index.html#L1676-L2228)
|
||||
- JavaScript切换逻辑:[index.html:2533-2562](file://index.html#L2533-L2562)
|
||||
- 响应式适配:[index.html:1537-1544](file://index.html#L1537-L1544)
|
||||
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)
|
||||
364
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/内容区域布局.md
Normal file
364
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/内容区域布局.md
Normal file
@@ -0,0 +1,364 @@
|
||||
# 内容区域布局
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考量](#性能考量)
|
||||
8. [故障排查指南](#故障排查指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本文件面向UI设计师与前端开发者,系统梳理“有维项目”的内容区域布局设计与实现,重点解析:
|
||||
- 内容卡片网格系统的实现原理与响应式策略
|
||||
- 功能卡片、项目卡片、列表卡片的布局规范与交互设计
|
||||
- 内容区域的排版系统、间距控制与对齐规则
|
||||
- 响应式断点、移动端适配与触摸交互优化
|
||||
- 卡片样式定制指南、主题配置与尺寸调整方案
|
||||
- 可访问性设计、字体排版与色彩对比度考虑
|
||||
|
||||
## 项目结构
|
||||
本项目采用单页应用(SPA)结构,通过页面切换与标签页切换组织内容区域。核心结构如下:
|
||||
- 页面容器:登录页、仪表盘页、AI智能体页
|
||||
- 仪表盘页包含导航栏、Tab导航与多个内容区(概览、教育、AI工具、校友、会员)
|
||||
- AI智能体页包含导航栏、搜索与筛选、卡片网格
|
||||
- 全局样式通过CSS变量统一主题色与阴影,配合媒体查询实现响应式
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html"] --> B["登录页(login-page)"]
|
||||
A --> C["仪表盘页(dashboard-page)"]
|
||||
A --> D["AI智能体页(ai-page)"]
|
||||
C --> E["导航栏(navbar)"]
|
||||
C --> F["Tab导航(tab-nav)"]
|
||||
C --> G["概览内容区(tab-content#overview)"]
|
||||
C --> H["教育内容区(tab-content#education)"]
|
||||
C --> I["AI工具内容区(tab-content#ai-tools)"]
|
||||
C --> J["校友内容区(tab-content#alumni)"]
|
||||
C --> K["会员内容区(tab-content#membership)"]
|
||||
D --> L["导航栏(navbar)"]
|
||||
D --> M["搜索与筛选(ai-header/industry-filter)"]
|
||||
D --> N["AI卡片网格(ai-grid)"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 核心组件
|
||||
本节聚焦内容区域的关键组件及其职责:
|
||||
- 页面容器与切换:通过类名切换实现页面显示隐藏与动画过渡
|
||||
- 导航与Tab:主导航与内容区Tab切换,统一交互与视觉反馈
|
||||
- 卡片网格系统:统计卡片、内容卡片、课程卡片、AI卡片、会员卡片、活动卡片、心声卡片等
|
||||
- 响应式断点:针对不同屏幕宽度的网格列数与布局调整
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 架构总览
|
||||
内容区域的布局架构围绕“网格系统 + 主题变量 + 响应式断点”展开,辅以交互脚本完成页面与内容区切换。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "主题与排版"
|
||||
T1["CSS变量(:root)"]
|
||||
T2["字体与行高(body)"]
|
||||
T3["阴影与渐变(阴影/渐变变量)"]
|
||||
end
|
||||
subgraph "页面与容器"
|
||||
P1["登录页(login-page)"]
|
||||
P2["仪表盘页(dashboard-page)"]
|
||||
P3["AI智能体页(ai-page)"]
|
||||
C1["仪表盘内容(dashboard-content)"]
|
||||
C2["AI内容(ai-content)"]
|
||||
end
|
||||
subgraph "网格系统"
|
||||
G1["统计网格(stats-grid)"]
|
||||
G2["内容网格(content-grid)"]
|
||||
G3["课程网格(course-grid)"]
|
||||
G4["AI网格(ai-grid)"]
|
||||
G5["会员网格(membership-grid)"]
|
||||
G6["活动列表(activity-list)"]
|
||||
G7["心声网格(testimonial-grid)"]
|
||||
end
|
||||
subgraph "交互与动画"
|
||||
S1["页面切换(showPage)"]
|
||||
S2["Tab切换(showTab)"]
|
||||
S3["用户菜单(toggleUserMenu/closeAllMenus)"]
|
||||
S4["加载遮罩(login-loading)"]
|
||||
end
|
||||
T1 --> G1
|
||||
T1 --> G2
|
||||
T1 --> G3
|
||||
T1 --> G4
|
||||
T1 --> G5
|
||||
T1 --> G6
|
||||
T1 --> G7
|
||||
T2 --> P2
|
||||
T2 --> P3
|
||||
T3 --> G1
|
||||
T3 --> G2
|
||||
T3 --> G3
|
||||
T3 --> G4
|
||||
T3 --> G5
|
||||
T3 --> G6
|
||||
T3 --> G7
|
||||
P1 --> S4
|
||||
P2 --> C1
|
||||
P3 --> C2
|
||||
C1 --> G1
|
||||
C1 --> G2
|
||||
C1 --> G3
|
||||
C1 --> G4
|
||||
C1 --> G5
|
||||
C1 --> G6
|
||||
C1 --> G7
|
||||
C2 --> G4
|
||||
S1 --> P1
|
||||
S1 --> P2
|
||||
S1 --> P3
|
||||
S2 --> G1
|
||||
S2 --> G2
|
||||
S2 --> G3
|
||||
S2 --> G4
|
||||
S2 --> G5
|
||||
S2 --> G6
|
||||
S2 --> G7
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 网格系统与卡片类型
|
||||
- 统计卡片网格(stats-grid)
|
||||
- 规则:固定4列栅格,列间距与卡片内边距统一,悬停提升与阴影增强
|
||||
- 适用:平台概览中的指标展示
|
||||
- 内容卡片网格(content-grid)
|
||||
- 规则:默认3列,卡片内含图标、标题、描述与列表;hover轻微上移
|
||||
- 适用:三大业务板块(教育/AI/校友)的功能概览
|
||||
- 课程卡片网格(course-grid)
|
||||
- 规则:默认4列,卡片内含图标、标题、描述与元信息(时长/人数)
|
||||
- 适用:课程体系展示与学习路径
|
||||
- AI卡片网格(ai-grid)
|
||||
- 规则:默认3列,卡片含头像、标签、特性标签与操作按钮;hover提升与边框强调
|
||||
- 适用:AI智能体门户
|
||||
- 会员卡片网格(membership-grid)
|
||||
- 规则:默认3列,推荐卡片带徽章与渐变背景;hover提升与阴影增强
|
||||
- 适用:会员体系对比
|
||||
- 活动列表(activity-list)
|
||||
- 规则:垂直列表,每项含日期、信息与标签;hover向右平移
|
||||
- 适用:近期活动展示
|
||||
- 心声网格(testimonial-grid)
|
||||
- 规则:2列网格,卡片内含引号文本与作者信息
|
||||
- 适用:校友评价展示
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class StatsGrid {
|
||||
+grid-template-columns : 4
|
||||
+gap : 24px
|
||||
+hover : 提升+阴影
|
||||
}
|
||||
class ContentGrid {
|
||||
+grid-template-columns : 3
|
||||
+gap : 24px
|
||||
+item : 图标+标题+描述+列表
|
||||
+hover : 轻微上移
|
||||
}
|
||||
class CourseGrid {
|
||||
+grid-template-columns : 4
|
||||
+gap : 20px
|
||||
+item : 图标+标题+描述+元信息
|
||||
+hover : 提升+阴影
|
||||
}
|
||||
class AiGrid {
|
||||
+grid-template-columns : 3
|
||||
+gap : 24px
|
||||
+item : 头像+标签+特性+按钮
|
||||
+hover : 提升+边框强调
|
||||
}
|
||||
class MembershipGrid {
|
||||
+grid-template-columns : 3
|
||||
+gap : 24px
|
||||
+item : 标题+价格+描述+列表
|
||||
+recommended : 徽章+渐变背景
|
||||
+hover : 提升+阴影
|
||||
}
|
||||
class ActivityList {
|
||||
+flex-direction : column
|
||||
+item : 日期+信息+标签
|
||||
+hover : 向右平移
|
||||
}
|
||||
class TestimonialGrid {
|
||||
+grid-template-columns : 2
|
||||
+gap : 24px
|
||||
+item : 引号文本+作者信息
|
||||
}
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 响应式布局策略
|
||||
- 大屏(≥1200px)
|
||||
- 登录页内容改为纵向排列
|
||||
- 功能卡片网格:3列
|
||||
- 统计卡片网格:2列
|
||||
- 内容卡片网格:2列
|
||||
- AI卡片网格:2列
|
||||
- 中屏(≤1200px)
|
||||
- 功能卡片网格:3列
|
||||
- 统计卡片网格:2列
|
||||
- 内容卡片网格:2列
|
||||
- AI卡片网格:2列
|
||||
- 小屏(≤768px)
|
||||
- 登录页内容:减少内边距,表单宽度自适应
|
||||
- 导航菜单隐藏,侧边栏简化
|
||||
- 统计卡片网格:1列
|
||||
- 内容/会员/AI卡片网格:1列
|
||||
- 课程网格:2列
|
||||
- Tab导航:横向滚动
|
||||
- 聊天窗口:尺寸适配移动设备
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["进入页面"]) --> Viewport["检测视口宽度"]
|
||||
Viewport --> Large{"≥1200px?"}
|
||||
Large --> |是| LargeLayout["大屏布局<br/>网格列数按规则设置"]
|
||||
Large --> |否| Medium{"≤768px?"}
|
||||
Medium --> |是| SmallLayout["小屏布局<br/>网格列数降级为1列<br/>登录页自适应宽度"]
|
||||
Medium --> |否| MediumLayout["中屏布局<br/>网格列数适度压缩"]
|
||||
LargeLayout --> End(["渲染完成"])
|
||||
MediumLayout --> End
|
||||
SmallLayout --> End
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 排版系统、间距控制与对齐规则
|
||||
- 字体与行高
|
||||
- 全局字体族与行高统一,确保阅读舒适度
|
||||
- 标题层级
|
||||
- 页面标题、卡片标题、子标题采用明确字号与字重,形成清晰的视觉层级
|
||||
- 间距控制
|
||||
- 卡片间外边距、网格间隙、内边距均以统一变量控制,保证一致性
|
||||
- 对齐规则
|
||||
- 居中、两端对齐、左对齐在不同容器中分场景使用,保持信息密度与可读性的平衡
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 交互设计与动画
|
||||
- 页面切换与Tab切换
|
||||
- 使用类名切换与淡入动画,避免闪烁
|
||||
- 卡片悬停
|
||||
- 提升与阴影变化,提供明确的交互反馈
|
||||
- 下拉菜单与筛选
|
||||
- 缩放入场动画,点击外部区域自动关闭
|
||||
- 加载遮罩
|
||||
- 渐变背景与旋转动画,提升等待体验
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 可访问性与色彩对比度
|
||||
- 色彩体系
|
||||
- 主色、辅助色、强调色与背景色通过CSS变量统一管理,便于主题切换
|
||||
- 文字对比度
|
||||
- 文本颜色与背景色满足基本对比度要求,确保可读性
|
||||
- 交互元素
|
||||
- 悬停与焦点状态明确,键盘可达性良好(结合现有交互)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 依赖关系分析
|
||||
- 样式依赖
|
||||
- 所有组件依赖于CSS变量定义的主题色与阴影
|
||||
- 响应式断点依赖于媒体查询
|
||||
- 脚本依赖
|
||||
- 页面切换与Tab切换依赖DOM节点选择与类名操作
|
||||
- 下拉菜单与筛选依赖事件监听与状态管理
|
||||
- 数据流
|
||||
- 登录成功后更新用户显示信息,随后切换页面
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant JS as "脚本"
|
||||
participant DOM as "DOM"
|
||||
participant Page as "页面"
|
||||
U->>JS : 输入账号密码并提交
|
||||
JS->>DOM : 显示加载遮罩
|
||||
JS->>JS : 验证输入
|
||||
JS->>DOM : 隐藏加载遮罩
|
||||
JS->>DOM : 更新用户显示
|
||||
JS->>Page : 切换到仪表盘页
|
||||
Note over JS,Page : 页面切换与Tab切换由脚本控制
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 性能考量
|
||||
- 样式层面
|
||||
- 使用CSS变量减少重复定义,降低维护成本
|
||||
- 合理使用box-shadow与transform,避免强制重排
|
||||
- 交互层面
|
||||
- 下拉菜单与筛选使用缩放动画,避免复杂布局抖动
|
||||
- 响应式断点仅在必要时改变网格列数,减少重绘
|
||||
- 资源层面
|
||||
- 图标以emoji或小尺寸背景图实现,避免额外资源请求
|
||||
|
||||
## 故障排查指南
|
||||
- 页面无法切换
|
||||
- 检查页面ID是否正确,确认脚本中showPage调用的目标ID存在
|
||||
- Tab内容未显示
|
||||
- 检查Tab按钮与内容区ID是否一致,确认active类名切换逻辑
|
||||
- 下拉菜单不关闭
|
||||
- 检查点击外部关闭逻辑是否绑定到document,确认closeAllMenus被调用
|
||||
- 响应式异常
|
||||
- 检查媒体查询断点与网格列数设置,确认浏览器视口尺寸触发预期断点
|
||||
- 卡片悬停无效果
|
||||
- 检查hover样式是否被覆盖,确认CSS变量值正确
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 结论
|
||||
本项目的内容区域布局以网格系统为核心,结合统一的主题变量与响应式断点,实现了跨设备的一致体验。通过卡片化的内容组织与明确的交互反馈,既满足了信息密度的需求,也兼顾了可用性与可访问性。建议在后续迭代中进一步完善无障碍属性与键盘导航,并持续优化移动端交互细节。
|
||||
|
||||
## 附录
|
||||
- 主题变量清单(摘自CSS变量)
|
||||
- 主色、主色浅/深、辅助色、强调色、背景色、卡片背景、文本主/次色、边框色
|
||||
- 渐变色1/2、阴影变量(sm/md/lg/xl)
|
||||
- 常用间距与尺寸
|
||||
- 卡片圆角、内边距、网格间隙、卡片图标尺寸、头像尺寸等
|
||||
- 媒体查询断点
|
||||
- ≥1200px、≤768px两个主要断点下的网格列数与布局调整
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
393
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/导航系统设计.md
Normal file
393
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/导航系统设计.md
Normal file
@@ -0,0 +1,393 @@
|
||||
# 导航系统设计
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本设计文档面向有维项目的导航系统,聚焦顶部导航栏的完整架构与实现细节,包括:
|
||||
- Logo系统设计与品牌一致性
|
||||
- 主导航菜单布局与交互
|
||||
- 通知系统实现与视觉反馈
|
||||
- 用户信息面板与下拉菜单
|
||||
- 导航项激活状态管理机制
|
||||
- 悬停效果与过渡动画
|
||||
- 响应式设计与粘性定位
|
||||
- 层级管理与可访问性设计
|
||||
- 样式定制化指南与性能优化建议
|
||||
|
||||
## 项目结构
|
||||
有维项目采用单页应用(SPA)结构,导航系统位于页面顶部,贯穿登录页与仪表盘页。导航由三大部分组成:左侧Logo区、中间主导航菜单、右侧用户信息区(通知按钮与用户头像下拉菜单)。页面切换通过JavaScript控制,导航状态随页面变化而更新。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html"] --> B["样式层<br/>CSS变量与动画"]
|
||||
A --> C["导航容器<br/>.navbar"]
|
||||
C --> D["Logo区<br/>.nav-logo"]
|
||||
C --> E["主导航菜单<br/>.nav-menu/.nav-item"]
|
||||
C --> F["用户信息区<br/>.nav-user"]
|
||||
F --> G["通知按钮<br/>.nav-notification"]
|
||||
F --> H["用户头像<br/>.user-avatar"]
|
||||
H --> I["用户下拉菜单<br/>.user-menu"]
|
||||
A --> J["脚本层<br/>导航与页面切换逻辑"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:426-487](file://index.html#L426-L487)
|
||||
- [index.html:1627-1659](file://index.html#L1627-L1659)
|
||||
- [index.html:2234-2266](file://index.html#L2234-L2266)
|
||||
|
||||
章节来源
|
||||
- [index.html:426-487](file://index.html#L426-L487)
|
||||
- [index.html:1627-1659](file://index.html#L1627-L1659)
|
||||
- [index.html:2234-2266](file://index.html#L2234-L2266)
|
||||
|
||||
## 核心组件
|
||||
- Logo系统:统一的品牌标识,包含图标与文字,确保在不同页面保持一致的视觉识别。
|
||||
- 主导航菜单:包含多个导航项,支持悬停高亮与激活状态切换。
|
||||
- 通知系统:圆形徽标带红色小圆点,用于提示未读消息或重要事项。
|
||||
- 用户信息面板:用户头像点击展开下拉菜单,包含用户信息与操作项(如会员中心、账户设置、退出登录)。
|
||||
- 页面切换与状态管理:通过JavaScript控制页面显示与导航项激活状态,支持跨页面的一致交互体验。
|
||||
|
||||
章节来源
|
||||
- [index.html:185-204](file://index.html#L185-L204)
|
||||
- [index.html:438-457](file://index.html#L438-L457)
|
||||
- [index.html:459-481](file://index.html#L459-L481)
|
||||
- [index.html:489-522](file://index.html#L489-L522)
|
||||
- [index.html:1632-1637](file://index.html#L1632-L1637)
|
||||
- [index.html:2239-2244](file://index.html#L2239-L2244)
|
||||
|
||||
## 架构总览
|
||||
导航系统采用“结构-样式-行为”三层分离:
|
||||
- 结构:HTML语义化标签与类名组织,保证可读性与可维护性。
|
||||
- 样式:CSS变量定义主题色与阴影,动画与过渡增强交互体验。
|
||||
- 行为:JavaScript负责页面切换、菜单开关、状态同步与事件绑定。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant N as "导航栏"
|
||||
participant S as "脚本层"
|
||||
participant P as "页面容器"
|
||||
U->>N : 点击导航项
|
||||
N->>S : 触发onclick回调
|
||||
S->>P : 隐藏所有页面
|
||||
S->>P : 显示目标页面
|
||||
S->>N : 更新导航项激活状态
|
||||
N-->>U : 展示新页面与激活状态
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:2453-2459](file://index.html#L2453-L2459)
|
||||
- [index.html:1633](file://index.html#L1633)
|
||||
- [index.html:2240](file://index.html#L2240)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### Logo系统设计
|
||||
- 设计要点
|
||||
- 图标与文字组合,图标采用圆角矩形背景与品牌主色渐变,文字采用品牌主字体与字号。
|
||||
- 在登录页与仪表盘页均保持一致的Logo样式,确保品牌一致性。
|
||||
- 可定制化
|
||||
- 通过CSS变量调整图标尺寸、圆角半径、背景色与文字颜色。
|
||||
- 支持替换图标内容与品牌文案,满足不同版本需求。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Logo {
|
||||
+图标元素
|
||||
+文字元素
|
||||
+品牌配色
|
||||
+圆角设计
|
||||
}
|
||||
class LoginHeader {
|
||||
+Logo容器
|
||||
}
|
||||
class Navbar {
|
||||
+Logo容器
|
||||
}
|
||||
LoginHeader --> Logo : "包含"
|
||||
Navbar --> Logo : "包含"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:185-204](file://index.html#L185-L204)
|
||||
- [index.html:438-457](file://index.html#L438-L457)
|
||||
- [index.html:1557-1562](file://index.html#L1557-L1562)
|
||||
- [index.html:1628-1631](file://index.html#L1628-L1631)
|
||||
|
||||
章节来源
|
||||
- [index.html:185-204](file://index.html#L185-L204)
|
||||
- [index.html:438-457](file://index.html#L438-L457)
|
||||
- [index.html:1557-1562](file://index.html#L1557-L1562)
|
||||
- [index.html:1628-1631](file://index.html#L1628-L1631)
|
||||
|
||||
### 主导航菜单布局与交互
|
||||
- 布局
|
||||
- 居中对齐,采用flex布局,间距统一,圆角与过渡动画提升交互质感。
|
||||
- 激活状态管理
|
||||
- 使用active类控制当前页面对应的导航项高亮,切换页面时动态更新。
|
||||
- 悬停效果
|
||||
- hover状态下背景色与文字色变化,提供即时反馈。
|
||||
- 交互流程
|
||||
- 点击导航项触发页面切换,并同步更新导航项激活状态。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["点击导航项"]) --> HidePages["隐藏所有页面"]
|
||||
HidePages --> ShowTarget["显示目标页面"]
|
||||
ShowTarget --> UpdateActive["更新导航项激活状态"]
|
||||
UpdateActive --> End(["完成"])
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:459-481](file://index.html#L459-L481)
|
||||
- [index.html:2453-2459](file://index.html#L2453-L2459)
|
||||
- [index.html:1633](file://index.html#L1633)
|
||||
- [index.html:2240](file://index.html#L2240)
|
||||
|
||||
章节来源
|
||||
- [index.html:459-481](file://index.html#L459-L481)
|
||||
- [index.html:2453-2459](file://index.html#L2453-L2459)
|
||||
- [index.html:1632-1637](file://index.html#L1632-L1637)
|
||||
- [index.html:2239-2244](file://index.html#L2239-L2244)
|
||||
|
||||
### 通知系统实现
|
||||
- 视觉设计
|
||||
- 圆形按钮,带红色小圆点徽章,突出未读状态。
|
||||
- 交互行为
|
||||
- 点击通知按钮可触发相应动作(如跳转至通知页面),当前实现为占位交互。
|
||||
- 动画与过渡
|
||||
- 使用CSS过渡属性实现平滑的悬停与点击反馈。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class NotificationButton {
|
||||
+圆形按钮
|
||||
+徽章标记
|
||||
+悬停过渡
|
||||
+点击交互
|
||||
}
|
||||
class Badge {
|
||||
+红色圆点
|
||||
+绝对定位
|
||||
}
|
||||
NotificationButton --> Badge : "徽章"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:489-510](file://index.html#L489-L510)
|
||||
- [index.html:1639](file://index.html#L1639)
|
||||
- [index.html:2246](file://index.html#L2246)
|
||||
|
||||
章节来源
|
||||
- [index.html:489-510](file://index.html#L489-L510)
|
||||
- [index.html:1639](file://index.html#L1639)
|
||||
- [index.html:2246](file://index.html#L2246)
|
||||
|
||||
### 用户信息面板与下拉菜单
|
||||
- 用户头像
|
||||
- 圆形头像,背景采用品牌渐变色,显示用户首字母作为占位头像。
|
||||
- 下拉菜单
|
||||
- 点击头像展开菜单,包含用户信息与操作项;点击外部区域自动关闭。
|
||||
- 操作项
|
||||
- 会员中心、账户设置、退出登录等常用功能入口。
|
||||
- 动画与层级
|
||||
- 使用scaleIn动画展开菜单,z-index确保在页面层级中处于上层。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant A as "用户头像"
|
||||
participant M as "用户菜单"
|
||||
U->>A : 点击头像
|
||||
A->>M : 切换active状态
|
||||
M-->>U : 展示菜单项
|
||||
U->>M : 点击菜单项
|
||||
M-->>U : 执行操作并关闭菜单
|
||||
U->>document : 点击页面其他区域
|
||||
document->>M : 关闭菜单
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:511-522](file://index.html#L511-L522)
|
||||
- [index.html:106-126](file://index.html#L106-L126)
|
||||
- [index.html:1640-1657](file://index.html#L1640-L1657)
|
||||
- [index.html:2247-2264](file://index.html#L2247-L2264)
|
||||
|
||||
章节来源
|
||||
- [index.html:511-522](file://index.html#L511-L522)
|
||||
- [index.html:106-126](file://index.html#L106-L126)
|
||||
- [index.html:1640-1657](file://index.html#L1640-L1657)
|
||||
- [index.html:2247-2264](file://index.html#L2247-L2264)
|
||||
|
||||
### 激活状态管理机制
|
||||
- 页面切换时,脚本层遍历所有页面并移除active类,为目标页面添加active类。
|
||||
- 同步更新导航项的激活状态,确保视觉一致性。
|
||||
- Tab切换同样遵循相同机制,通过按钮与内容块的对应关系实现状态同步。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Click["点击Tab按钮"] --> RemoveActive["移除所有按钮active类"]
|
||||
RemoveActive --> HideAll["隐藏所有内容块"]
|
||||
HideAll --> ShowTarget["显示目标内容块"]
|
||||
ShowTarget --> AddActive["为目标按钮添加active类"]
|
||||
AddActive --> Done["完成"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:2534-2550](file://index.html#L2534-L2550)
|
||||
- [index.html:1668-1674](file://index.html#L1668-L1674)
|
||||
|
||||
章节来源
|
||||
- [index.html:2534-2550](file://index.html#L2534-L2550)
|
||||
- [index.html:1668-1674](file://index.html#L1668-L1674)
|
||||
|
||||
### 悬停效果与过渡动画
|
||||
- 导航项与菜单项在hover时改变背景色与文字色,提供即时反馈。
|
||||
- 下拉菜单使用scaleIn动画,配合z-index确保层级正确。
|
||||
- 页面切换与模态框采用淡入与滑动动画,提升用户体验。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Hover["鼠标悬停"] --> ChangeColor["背景色/文字色变化"]
|
||||
ChangeColor --> Transition["过渡动画"]
|
||||
Transition --> Feedback["用户反馈"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:473-476](file://index.html#L473-L476)
|
||||
- [index.html:154-156](file://index.html#L154-L156)
|
||||
- [index.html:1207-1210](file://index.html#L1207-L1210)
|
||||
|
||||
章节来源
|
||||
- [index.html:473-476](file://index.html#L473-L476)
|
||||
- [index.html:154-156](file://index.html#L154-L156)
|
||||
- [index.html:1207-1210](file://index.html#L1207-L1210)
|
||||
|
||||
### 响应式设计与粘性定位
|
||||
- 粘性定位
|
||||
- 导航栏使用sticky定位,top为0,确保滚动时始终固定在顶部。
|
||||
- 响应式布局
|
||||
- 在768px以下断点,主导航菜单隐藏,移动端适配更简洁的布局。
|
||||
- 在1200px以下断点,网格布局自适应列数,保证内容可读性。
|
||||
- 层级管理
|
||||
- 导航栏z-index较高,确保在页面滚动时不会被其他元素遮挡。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Viewport["视口宽度"] --> Mobile{"<= 768px?"}
|
||||
Mobile --> |是| HideMenu["隐藏主导航菜单"]
|
||||
Mobile --> |否| Desktop["保持主导航菜单"]
|
||||
Viewport --> Tablet{"<= 1200px?"}
|
||||
Tablet --> |是| GridAdjust["网格列数调整"]
|
||||
Tablet --> |否| FullGrid["全宽网格"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1510-1516](file://index.html#L1510-L1516)
|
||||
- [index.html:1492-1545](file://index.html#L1492-L1545)
|
||||
- [index.html:433-436](file://index.html#L433-L436)
|
||||
|
||||
章节来源
|
||||
- [index.html:1510-1516](file://index.html#L1510-L1516)
|
||||
- [index.html:1492-1545](file://index.html#L1492-L1545)
|
||||
- [index.html:433-436](file://index.html#L433-L436)
|
||||
|
||||
### 可访问性设计
|
||||
- 语义化结构
|
||||
- 使用nav、button等语义化标签,便于辅助技术识别。
|
||||
- 键盘导航
|
||||
- 导航项与按钮具备可聚焦性,可通过Tab键导航,Enter键触发。
|
||||
- 屏幕阅读器兼容
|
||||
- 文字与图标结合,提供清晰的视觉与语义信息;徽章用于传达状态(如未读消息)。
|
||||
|
||||
章节来源
|
||||
- [index.html:459-481](file://index.html#L459-L481)
|
||||
- [index.html:2718-2724](file://index.html#L2718-L2724)
|
||||
|
||||
### 样式定制化指南
|
||||
- 主题色与变量
|
||||
- 通过CSS变量统一管理主色、辅色、背景色、阴影等,便于全局主题切换。
|
||||
- 尺寸调整
|
||||
- 导航高度、内边距、圆角半径、字体大小等均可通过变量与类名调整。
|
||||
- 动画参数
|
||||
- 过渡时长、缓动函数、动画时序等可在CSS中集中修改,确保一致性。
|
||||
|
||||
章节来源
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:426-487](file://index.html#L426-L487)
|
||||
|
||||
## 依赖关系分析
|
||||
导航系统依赖于以下关键要素:
|
||||
- HTML结构:导航容器、Logo、菜单项、用户头像与下拉菜单。
|
||||
- CSS样式:主题变量、动画与响应式断点。
|
||||
- JavaScript:页面切换、菜单开关、状态同步与事件绑定。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
HTML["HTML结构"] --> CSS["CSS样式"]
|
||||
HTML --> JS["JavaScript行为"]
|
||||
CSS --> JS
|
||||
JS --> HTML
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:426-487](file://index.html#L426-L487)
|
||||
- [index.html:2448-2732](file://index.html#L2448-L2732)
|
||||
|
||||
章节来源
|
||||
- [index.html:426-487](file://index.html#L426-L487)
|
||||
- [index.html:2448-2732](file://index.html#L2448-L2732)
|
||||
|
||||
## 性能考虑
|
||||
- 减少重绘与回流
|
||||
- 使用transform与opacity而非改变布局属性触发动画。
|
||||
- 合理使用CSS变量,避免频繁计算与样式抖动。
|
||||
- 事件委托
|
||||
- 使用document级事件监听减少重复绑定,提高事件处理性能。
|
||||
- 懒加载与按需渲染
|
||||
- 下拉菜单与模态框采用条件渲染,仅在需要时加载DOM节点。
|
||||
- 缓存与复用
|
||||
- 复用CSS动画与过渡,避免重复定义相同效果。
|
||||
|
||||
## 故障排除指南
|
||||
- 下拉菜单无法关闭
|
||||
- 检查点击外部区域的事件监听是否生效,确认closeAllMenus调用链。
|
||||
- 导航项状态不同步
|
||||
- 确认页面切换后是否正确移除其他按钮的active类并为目标按钮添加。
|
||||
- 响应式布局异常
|
||||
- 检查媒体查询断点与元素display属性,确保在目标分辨率下生效。
|
||||
- 动画卡顿
|
||||
- 检查transform与opacity使用情况,避免在动画过程中触发布局计算。
|
||||
|
||||
章节来源
|
||||
- [index.html:2511-2522](file://index.html#L2511-L2522)
|
||||
- [index.html:2534-2550](file://index.html#L2534-L2550)
|
||||
- [index.html:1492-1545](file://index.html#L1492-L1545)
|
||||
- [index.html:1207-1210](file://index.html#L1207-L1210)
|
||||
|
||||
## 结论
|
||||
有维项目的导航系统通过清晰的结构、统一的主题与流畅的交互,实现了品牌一致性与良好的用户体验。其激活状态管理、悬停效果与过渡动画、响应式设计与粘性定位,以及可访问性与性能优化,共同构成了一个可扩展、易维护的导航体系。建议在后续迭代中进一步完善键盘导航与无障碍支持,并持续优化动画性能与交互反馈。
|
||||
|
||||
## 附录
|
||||
- 代码片段路径
|
||||
- 导航容器与样式:[index.html:426-487](file://index.html#L426-L487)
|
||||
- Logo与导航项:[index.html:185-204](file://index.html#L185-L204)、[index.html:438-481](file://index.html#L438-L481)
|
||||
- 用户下拉菜单:[index.html:106-126](file://index.html#L106-L126)、[index.html:1640-1657](file://index.html#L1640-L1657)
|
||||
- 页面切换与状态管理:[index.html:2453-2459](file://index.html#L2453-L2459)、[index.html:2534-2550](file://index.html#L2534-L2550)
|
||||
- 响应式断点:[index.html:1492-1545](file://index.html#L1492-L1545)
|
||||
- 动画与过渡:[index.html:51-64](file://index.html#L51-L64)、[index.html:1207-1210](file://index.html#L1207-L1210)
|
||||
323
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/统计卡片设计.md
Normal file
323
有维项目/.qoder/repowiki/zh/content/用户界面设计/仪表盘布局/统计卡片设计.md
Normal file
@@ -0,0 +1,323 @@
|
||||
# 统计卡片设计
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排查指南](#故障排查指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本设计文档聚焦于“有维项目”的统计卡片系统,围绕统计卡片网格布局、响应式断点与视觉层次组织展开;同时对三类卡片设计模式(数据展示卡片、指标统计卡片、状态指示卡片)进行规范说明,并系统阐述交互设计(悬停、点击反馈、动画过渡、视觉引导)、颜色系统与图标设计、数据可视化原则、定制化指南、数据绑定与动态更新机制,以及性能优化、懒加载策略与内存管理建议。文档旨在为设计师与开发者提供统一、可落地的设计参考与实现指南。
|
||||
|
||||
## 项目结构
|
||||
本项目采用单页应用结构,统计卡片主要位于仪表盘页面的“平台概览”Tab中,采用CSS Grid实现网格布局,并通过媒体查询在不同屏幕尺寸下自适应调整列数与间距。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html<br/>主入口"] --> B["仪表盘页面<br/>.dashboard-page"]
|
||||
B --> C["Tab导航<br/>.tab-nav"]
|
||||
C --> D["平台概览Tab<br/>.tab-content#overview"]
|
||||
D --> E["统计卡片网格<br/>.stats-grid"]
|
||||
E --> F["统计卡片<br/>.stat-card"]
|
||||
F --> G["图标容器<br/>.stat-icon"]
|
||||
F --> H["数值展示<br/>.stat-value"]
|
||||
F --> I["标签说明<br/>.stat-label"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1626-1741](file://index.html#L1626-L1741)
|
||||
|
||||
章节来源
|
||||
- [index.html:1626-1741](file://index.html#L1626-L1741)
|
||||
|
||||
## 核心组件
|
||||
- 统计卡片网格(.stats-grid)
|
||||
- 使用CSS Grid实现,初始为4列,通过媒体查询在小屏设备上减少列数,保证信息密度与可读性。
|
||||
- 统计卡片(.stat-card)
|
||||
- 卡片容器,包含图标、数值与标签三要素,具备悬停提升与阴影增强的交互反馈。
|
||||
- 图标容器(.stat-icon)
|
||||
- 固定尺寸圆角矩形,内置图标,按主题色区分不同业务域。
|
||||
- 数值展示(.stat-value)
|
||||
- 大号粗体数字,强调关键指标。
|
||||
- 标签说明(.stat-label)
|
||||
- 小号辅助文本,解释数值含义。
|
||||
|
||||
章节来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
## 架构总览
|
||||
统计卡片系统由“布局层(Grid)—卡片层(Card)—内容层(Icon/Value/Label)”三层构成,配合CSS变量与媒体查询实现主题与响应式一致性。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "布局层"
|
||||
S1[".stats-grid<br/>Grid容器"]
|
||||
end
|
||||
subgraph "卡片层"
|
||||
C1[".stat-card<br/>卡片容器"]
|
||||
C2[".stat-card:hover<br/>悬停态"]
|
||||
end
|
||||
subgraph "内容层"
|
||||
I1[".stat-icon<br/>图标容器"]
|
||||
V1[".stat-value<br/>数值"]
|
||||
L1[".stat-label<br/>标签"]
|
||||
end
|
||||
S1 --> C1
|
||||
C1 --> I1
|
||||
C1 --> V1
|
||||
C1 --> L1
|
||||
C1 -.-> C2
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 统计卡片网格布局
|
||||
- 初始布局:4列等宽网格,列间距与行间距均为固定像素值,确保视觉对齐。
|
||||
- 响应式断点:
|
||||
- 宽度小于等于1200px:网格改为2列,适配中屏设备。
|
||||
- 宽度小于等于768px:网格改为1列,保证移动端阅读体验。
|
||||
- 视觉层次:卡片具备圆角、浅阴影与悬停提升效果,形成层级感与交互反馈。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["进入平台概览Tab"]) --> Init["初始化统计网格<br/>4列布局"]
|
||||
Init --> CheckWidth{"屏幕宽度"}
|
||||
CheckWidth --> |<= 768px| OneCol["1列网格"]
|
||||
CheckWidth --> |<= 1200px & > 768px| TwoCol["2列网格"]
|
||||
CheckWidth --> |> 1200px| FourCol["4列网格"]
|
||||
OneCol --> Render["渲染卡片"]
|
||||
TwoCol --> Render
|
||||
FourCol --> Render
|
||||
Render --> Hover["悬停提升与阴影增强"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:1677-1699](file://index.html#L1677-L1699)
|
||||
|
||||
章节来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:1677-1699](file://index.html#L1677-L1699)
|
||||
|
||||
### 数据展示卡片
|
||||
- 设计要点
|
||||
- 图标:使用语义明确的表情符号或图标,颜色与业务域一致。
|
||||
- 数值:采用大字号与高权重字体,突出关键信息。
|
||||
- 标签:简洁描述数值含义,避免冗长。
|
||||
- 交互反馈:悬停时卡片轻微上移并增强阴影,提供触控与视觉反馈。
|
||||
- 颜色系统:图标背景色与主题色保持一致,确保品牌一致性。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class StatCard {
|
||||
+图标容器(.stat-icon)
|
||||
+数值(.stat-value)
|
||||
+标签(.stat-label)
|
||||
+悬停效果(.stat-card : hover)
|
||||
}
|
||||
class Icon {
|
||||
+固定尺寸
|
||||
+圆角背景
|
||||
+主题色系
|
||||
}
|
||||
class Value {
|
||||
+大字号
|
||||
+高权重
|
||||
}
|
||||
class Label {
|
||||
+小字号
|
||||
+辅助说明
|
||||
}
|
||||
StatCard --> Icon : "包含"
|
||||
StatCard --> Value : "包含"
|
||||
StatCard --> Label : "包含"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
章节来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
### 指标统计卡片
|
||||
- 设计要点
|
||||
- 数值单位与格式:如“2000+”等聚合指标,需在标签中明确单位或范围。
|
||||
- 可视化原则:优先使用清晰的数字与简短标签,避免复杂图表。
|
||||
- 交互设计:悬停提升与阴影变化,增强点击预期。
|
||||
- 响应式适配:在窄屏下保持紧凑布局,必要时隐藏次要信息。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant C as ".stat-card"
|
||||
participant G as ".stats-grid"
|
||||
U->>C : "鼠标悬停"
|
||||
C->>C : "transform : translateY(-4px)"
|
||||
C->>C : "box-shadow : var(--shadow-md)"
|
||||
U->>G : "屏幕尺寸变化"
|
||||
G->>G : "媒体查询切换列数"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
|
||||
章节来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
|
||||
### 状态指示卡片
|
||||
- 设计要点
|
||||
- 使用语义化图标与颜色表达状态(如成功、警告、错误),但本项目未直接出现状态卡片示例。
|
||||
- 若扩展状态卡片,建议结合图标、颜色与标签共同传达状态含义。
|
||||
- 交互设计:与数据展示卡片一致,保持统一的悬停与阴影反馈。
|
||||
|
||||
(本节为概念性说明,不直接分析具体源码)
|
||||
|
||||
### 交互设计
|
||||
- 悬停效果:卡片轻微上移与阴影增强,提供触控与视觉反馈。
|
||||
- 点击反馈:卡片具备可点击区域,结合Tab切换与页面跳转实现导航。
|
||||
- 动画过渡:使用CSS transition实现平滑的位移与阴影变化。
|
||||
- 视觉引导:通过阴影与提升效果引导用户关注当前交互元素。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant S as "统计卡片"
|
||||
U->>S : "鼠标悬停"
|
||||
S-->>U : "transform : translateY(-4px)"
|
||||
S-->>U : "box-shadow : var(--shadow-md)"
|
||||
U->>S : "鼠标离开"
|
||||
S-->>U : "恢复默认状态"
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
章节来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
### 颜色系统与图标设计
|
||||
- 颜色系统
|
||||
- 主题色:紫色、绿色、蓝色、橙色等,用于图标背景与强调色。
|
||||
- 背景色:卡片背景为白色,网格背景为浅灰,确保对比度与可读性。
|
||||
- 阴影:采用多级阴影变量,营造立体感。
|
||||
- 图标设计
|
||||
- 使用表情符号或简洁图标,与业务域对应,保持风格统一。
|
||||
- 图标容器为固定尺寸与圆角背景,确保视觉平衡。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Theme["主题色系<br/>紫色/绿色/蓝色/橙色"] --> IconBg["图标背景色"]
|
||||
CardBg["卡片背景色<br/>白色"] --> Contrast["对比度保障"]
|
||||
Shadow["阴影变量<br/>多级阴影"] --> Depth["层次感"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
章节来源
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
### 数据可视化原则
|
||||
- 简洁优先:统计卡片以数字与简短标签为主,避免复杂图表。
|
||||
- 语义明确:图标与标签共同传达含义,减少歧义。
|
||||
- 层次清晰:通过字号、权重与颜色区分主次信息。
|
||||
- 响应式适配:在窄屏下保持信息密度与可读性。
|
||||
|
||||
(本节为通用设计原则说明)
|
||||
|
||||
### 定制化指南
|
||||
- 结构定制
|
||||
- 可通过修改统计网格列数与间距,适配不同业务场景。
|
||||
- 卡片内容可替换为新的图标、数值与标签组合。
|
||||
- 样式定制
|
||||
- 使用CSS变量统一管理主题色与阴影,便于全局替换。
|
||||
- 通过伪类与hover状态实现交互反馈。
|
||||
- 数据绑定与动态更新
|
||||
- 在现有结构基础上,可通过脚本动态更新数值与标签内容,保持与后端数据同步。
|
||||
- 建议采用轻量的数据绑定库或原生DOM操作,避免过度依赖框架。
|
||||
|
||||
章节来源
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
- [index.html:2448-2732](file://index.html#L2448-L2732)
|
||||
|
||||
## 依赖关系分析
|
||||
统计卡片系统依赖于:
|
||||
- CSS Grid:实现网格布局与响应式列数切换。
|
||||
- CSS变量:统一颜色与阴影,便于主题定制。
|
||||
- 媒体查询:在不同断点下调整网格列数与间距。
|
||||
- JavaScript:页面切换、用户交互与动态内容更新(与统计卡片联动)。
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
CSS["CSS Grid/变量/媒体查询"] --> Layout["统计网格布局"]
|
||||
JS["JavaScript<br/>页面切换/交互"] --> Interact["用户交互"]
|
||||
Layout --> Render["渲染统计卡片"]
|
||||
Interact --> Render
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:2448-2732](file://index.html#L2448-L2732)
|
||||
|
||||
章节来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:2448-2732](file://index.html#L2448-L2732)
|
||||
|
||||
## 性能考虑
|
||||
- 渲染性能
|
||||
- 使用CSS Grid与transform属性进行布局与动画,避免频繁重排与重绘。
|
||||
- 控制阴影与透明度的使用数量,减少GPU压力。
|
||||
- 响应式性能
|
||||
- 媒体查询仅影响布局列数,不引入额外脚本逻辑,降低复杂度。
|
||||
- 交互性能
|
||||
- 悬停动画使用transition,帧率稳定且开销较小。
|
||||
- 内存管理
|
||||
- 统计卡片为静态内容,无需复杂状态管理;若引入动态数据,建议采用轻量数据绑定与及时清理事件监听。
|
||||
|
||||
(本节为通用性能建议说明)
|
||||
|
||||
## 故障排查指南
|
||||
- 卡片未按预期换列
|
||||
- 检查媒体查询断点是否正确,确认容器宽度是否达到断点阈值。
|
||||
- 悬停效果异常
|
||||
- 检查hover状态样式是否被覆盖,确认transition属性是否生效。
|
||||
- 数值显示错位
|
||||
- 检查字体大小与行高设置,确保在不同字号下仍保持垂直居中。
|
||||
- 颜色不一致
|
||||
- 检查CSS变量定义与引用,确保主题色与图标背景色一致。
|
||||
|
||||
章节来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
|
||||
## 结论
|
||||
本统计卡片系统以简洁、清晰为核心设计目标,通过CSS Grid实现灵活的网格布局,借助媒体查询在多终端上保持一致的视觉体验。卡片采用统一的颜色与图标体系,配合悬停与阴影反馈,形成良好的交互体验。建议在后续扩展中遵循本文档的设计原则与定制化指南,确保系统在功能扩展与性能优化上的可持续发展。
|
||||
|
||||
## 附录
|
||||
- 响应式断点一览
|
||||
- 1200px:2列网格
|
||||
- 768px:1列网格
|
||||
- 主题色与图标背景
|
||||
- 紫色、绿色、蓝色、橙色等主题色用于图标背景,保持品牌一致性。
|
||||
|
||||
章节来源
|
||||
- [index.html:1469-1545](file://index.html#L1469-L1545)
|
||||
- [index.html:586-633](file://index.html#L586-L633)
|
||||
244
有维项目/.qoder/repowiki/zh/content/用户界面设计/响应式设计.md
Normal file
244
有维项目/.qoder/repowiki/zh/content/用户界面设计/响应式设计.md
Normal file
@@ -0,0 +1,244 @@
|
||||
# 响应式设计
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考量](#性能考量)
|
||||
8. [故障排查指南](#故障排查指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本文件面向前端开发者,系统性梳理“有维项目”的响应式设计实现与最佳实践。文档聚焦于:
|
||||
- 设计理念与断点策略
|
||||
- 移动端优先与弹性布局
|
||||
- 媒体查询的使用与覆盖范围
|
||||
- 各页面组件在不同屏幕尺寸下的表现(登录页、仪表盘、AI智能体页)
|
||||
- 触摸友好交互与移动端优化
|
||||
- 不同设备类型(手机、平板、桌面)的差异化适配
|
||||
- 性能优化建议与调试测试方法
|
||||
|
||||
## 项目结构
|
||||
该项目采用单页应用(SPA)结构,所有页面与样式集中在单一 HTML 文件中,通过类名控制页面切换与组件显隐。整体结构清晰,便于统一维护与响应式控制。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Root["index.html"] --> Head["head 部分<br/>全局样式与变量"]
|
||||
Root --> Body["body 部分<br/>页面容器与脚本"]
|
||||
Head --> Styles["内联样式<br/>含响应式断点"]
|
||||
Body --> Pages["页面容器<br/>.page.active 控制显示"]
|
||||
Body --> Scripts["内联脚本<br/>页面切换与交互"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 核心组件
|
||||
- 页面容器与切换:通过 .page 类控制页面隐藏/显示,并以 .active 控制当前页面。
|
||||
- 登录页面:包含登录表单、品牌信息与特性卡片网格。
|
||||
- 仪表盘页面:导航栏、Tab 导航、统计卡片网格、内容卡片网格、课程网格、学习路径、会员体系表格等。
|
||||
- AI 智能体页面:导航栏、搜索与筛选、智能体卡片网格、对话弹窗。
|
||||
- 响应式断点:在 1200px 与 768px 处进行关键布局调整。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 架构总览
|
||||
整体采用“移动端优先 + 渐进增强”策略。基础样式在大屏上提供最优布局,随后在小屏断点处逐步简化与重组,确保在不同设备上的可用性与可读性。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start["页面加载"] --> Init["初始化页面与用户状态"]
|
||||
Init --> Viewport["viewport 设置<br/>width=device-width, initial-scale=1.0"]
|
||||
Viewport --> BaseLayout["基础布局<br/>flex/grid 布局"]
|
||||
BaseLayout --> Break1200["断点 1200px<br/>网格列数减少"]
|
||||
Break1200 --> Break768["断点 768px<br/>进一步简化与堆叠"]
|
||||
Break768 --> TouchOpt["触摸友好交互<br/>按钮尺寸、间距、点击区域"]
|
||||
TouchOpt --> Perf["性能优化<br/>动画与阴影按需启用"]
|
||||
Perf --> End["完成渲染"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 登录页面(移动端优先)
|
||||
- 布局策略
|
||||
- 主容器采用纵向堆叠(flex-direction: column),在 1200px 断点前保持左右并排;在 1200px 断点后改为纵向堆叠,保证信息区与表单区在小屏上更易阅读。
|
||||
- 特性卡片网格在 1200px 断点后由 3 列变为 3 列,768px 断点后降为 1 列,确保在窄屏上每张卡片独占一行。
|
||||
- 登录表单容器宽度在 768px 断点后变为 100%,并减少内边距,提升移动端可触达性。
|
||||
- 触摸友好
|
||||
- 表单控件与按钮具备合理的最小点击尺寸与间距,避免误触。
|
||||
- 输入框获得焦点时的高亮与阴影提示,增强交互反馈。
|
||||
- 性能与可访问性
|
||||
- 使用 CSS 变量统一颜色与阴影,减少重复定义,便于维护。
|
||||
- 动画采用轻量级过渡,避免在低端设备上造成卡顿。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
LoginStart["进入登录页"] --> FlexRow["桌面:左右并排"]
|
||||
FlexRow --> Break1200["1200px 断点"]
|
||||
Break1200 --> FlexCol["小屏:纵向堆叠"]
|
||||
FlexCol --> GridReduce["1200px:特性卡片 3 列<br/>768px:1 列"]
|
||||
GridReduce --> FormWidth["768px:表单 100% 宽度"]
|
||||
FormWidth --> TouchReady["触摸友好:间距与点击区域"]
|
||||
TouchReady --> LoginEnd["完成渲染"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 仪表盘页面(网格系统与 Tab 导航)
|
||||
- 网格系统
|
||||
- 统计卡片网格在 1200px 断点后由 4 列减少至 2 列,768px 断点后降为 1 列,保证信息密度与可读性。
|
||||
- 内容卡片网格、会员网格、AI 智能体网格同样遵循相同策略,确保在小屏上不拥挤。
|
||||
- 课程网格在 768px 断点后降为 2 列,兼顾信息密度与可读性。
|
||||
- Tab 导航
|
||||
- 在 768px 断点处,Tab 导航容器允许横向滚动,避免标签被挤出可视区域。
|
||||
- 性能与可访问性
|
||||
- 使用 CSS 变量统一阴影与渐变,减少重复样式。
|
||||
- 卡片 hover 效果在小屏设备上可按需禁用,降低动画开销。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
DashboardStart["进入仪表盘"] --> StatsGrid["统计卡片:4 列"]
|
||||
StatsGrid --> Break1200["1200px:2 列"]
|
||||
Break1200 --> Break768["768px:1 列"]
|
||||
Break768 --> ContentGrid["内容卡片网格:3 列"]
|
||||
ContentGrid --> MembershipGrid["会员网格:3 列"]
|
||||
MembershipGrid --> AIGrid["AI 网格:4 列"]
|
||||
AIGrid --> CourseGrid["课程网格:4 列"]
|
||||
CourseGrid --> TabScroll["768px:Tab 横向滚动"]
|
||||
TabScroll --> DashboardEnd["完成渲染"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### AI 智能体页面(筛选与卡片网格)
|
||||
- 筛选与搜索
|
||||
- 搜索框与筛选按钮在 768px 断点后允许换行,避免拥挤。
|
||||
- “更多”下拉菜单在小屏上通过绝对定位与动画呈现,保证交互一致性。
|
||||
- 卡片网格
|
||||
- 在 1200px 断点后由 4 列减少至 2 列,768px 断点后降为 1 列,确保卡片在小屏上清晰可读。
|
||||
- 对话弹窗
|
||||
- 弹窗容器在 768px 断点后宽度与高度自适应,保证在移动设备上的可操作性。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
AIStart["进入 AI 页面"] --> Filter["筛选栏:多按钮换行"]
|
||||
Filter --> MoreDropdown["更多下拉:绝对定位"]
|
||||
MoreDropdown --> AIGrid["AI 卡片网格:4 列"]
|
||||
AIGrid --> Break1200["1200px:2 列"]
|
||||
Break1200 --> Break768["768px:1 列"]
|
||||
Break768 --> ChatModal["对话弹窗:自适应宽高"]
|
||||
ChatModal --> AIEnd["完成渲染"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
### 响应式断点与适配策略
|
||||
- 断点设置
|
||||
- 1200px:用于减少网格列数,提升信息密度与可读性。
|
||||
- 768px:用于进一步简化布局,将横向布局转为纵向堆叠,确保移动端可用性。
|
||||
- 适配策略
|
||||
- 移动端优先:基础样式针对小屏优化,随后在大屏断点处增强布局复杂度。
|
||||
- 弹性布局:广泛使用 flex 与 grid,配合媒体查询进行动态调整。
|
||||
- 触摸友好:增大点击区域、增加间距、简化交互层级。
|
||||
- 性能优化:在小屏设备上减少阴影与动画,避免过度渲染。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 依赖关系分析
|
||||
- 样式依赖
|
||||
- 所有页面样式集中于 head 中的内联样式,无外部依赖,便于部署与缓存。
|
||||
- 使用 CSS 变量统一主题色与阴影,降低维护成本。
|
||||
- 脚本依赖
|
||||
- 页面切换、用户菜单、Tab 切换、行业筛选、对话弹窗等功能均由内联脚本实现,无外部 JS 依赖。
|
||||
- 响应式依赖
|
||||
- 媒体查询仅依赖浏览器默认 viewport 行为,无需额外 polyfill。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Styles["内联样式<br/>CSS 变量与断点"] --> Components["页面组件<br/>登录/仪表盘/AI"]
|
||||
Scripts["内联脚本<br/>页面切换与交互"] --> Components
|
||||
Components --> Browser["浏览器渲染<br/>viewport 默认行为"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 性能考量
|
||||
- 动画与阴影
|
||||
- 在小屏设备上可按需减少阴影与动画数量,避免低端设备卡顿。
|
||||
- 图片与图标
|
||||
- 项目中使用 Unicode 图标与 CSS 渐变,无需额外图片资源,减少请求与带宽占用。
|
||||
- 字体与排版
|
||||
- 使用系统字体栈,避免字体加载阻塞,提升首屏渲染速度。
|
||||
- 媒体查询
|
||||
- 断点数量较少,减少匹配复杂度,提高渲染性能。
|
||||
|
||||
[本节为通用性能建议,不直接分析具体文件]
|
||||
|
||||
## 故障排查指南
|
||||
- 页面无法切换
|
||||
- 检查 .page.active 是否正确切换,确认页面 ID 与切换函数一致。
|
||||
- 用户菜单不显示
|
||||
- 检查 .user-menu.active 是否被正确添加,确认点击事件绑定与关闭逻辑。
|
||||
- Tab 切换无效
|
||||
- 检查 .tab-btn.active 与 .tab-content.active 的切换逻辑是否匹配。
|
||||
- 行业筛选异常
|
||||
- 检查 .industry-btn.active 的移除与添加逻辑,确认更多下拉菜单的展开/收起。
|
||||
- 对话弹窗无法关闭
|
||||
- 检查 .chat-modal.active 的切换与背景点击关闭逻辑。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
|
||||
## 结论
|
||||
本项目采用“移动端优先 + 渐进增强”的响应式策略,在 1200px 与 768px 两个关键断点处对网格布局进行简化,确保在不同设备上的可用性与可读性。通过统一的 CSS 变量与内联脚本,实现了简洁高效的单页应用。建议在后续迭代中:
|
||||
- 增加更细粒度的断点与组件级媒体查询,进一步提升小屏体验。
|
||||
- 将内联样式拆分为独立 CSS 文件,便于缓存与版本管理。
|
||||
- 引入自动化测试与跨设备真机测试,保障兼容性。
|
||||
|
||||
[本节为总结性内容,不直接分析具体文件]
|
||||
|
||||
## 附录
|
||||
|
||||
### 断点与单位转换参考
|
||||
- 断点
|
||||
- 1200px:用于减少网格列数与调整布局密度。
|
||||
- 768px:用于进一步简化布局,确保移动端可用性。
|
||||
- 单位
|
||||
- 项目主要使用 rem、px、em 等相对/绝对单位,配合 CSS 变量统一尺寸与间距。
|
||||
- 媒体查询使用 px 作为断点阈值,符合现代浏览器默认缩放行为。
|
||||
|
||||
章节来源
|
||||
- [index.html](file://index.html)
|
||||
370
有维项目/.qoder/repowiki/zh/content/用户界面设计/用户界面设计.md
Normal file
370
有维项目/.qoder/repowiki/zh/content/用户界面设计/用户界面设计.md
Normal file
@@ -0,0 +1,370 @@
|
||||
# 用户界面设计
|
||||
|
||||
<cite>
|
||||
**本文引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考量](#性能考量)
|
||||
8. [故障排查指南](#故障排查指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本设计文档面向“有维商学”平台的用户界面,聚焦登录页与仪表盘两大核心页面,系统梳理设计理念、视觉元素、交互流程与响应式策略,并对CSS自定义属性系统、渐变与阴影、卡片组件、动画过渡与移动端适配进行深入解析。文档同时提供组件使用指南与定制化建议,帮助设计师与前端开发者快速理解并扩展界面。
|
||||
|
||||
## 项目结构
|
||||
本项目采用单页应用结构,所有页面与样式内嵌于单一HTML文件中,便于部署与维护。页面通过类名控制显示隐藏,配合脚本实现页面切换与交互逻辑。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html"] --> B["登录页面(login-page)"]
|
||||
A --> C["仪表盘页面(dashboard-page)"]
|
||||
A --> D["AI智能体页面(ai-page)"]
|
||||
A --> E["聊天对话弹窗(chat-modal)"]
|
||||
B --> F["登录表单(login-form-container)"]
|
||||
B --> G["功能特性卡片(feature-cards)"]
|
||||
C --> H["导航栏(navbar)"]
|
||||
C --> I["标签页(tab-nav)"]
|
||||
C --> J["统计卡片(stats-grid)"]
|
||||
C --> K["内容卡片(content-card)"]
|
||||
C --> L["课程卡片(course-grid)"]
|
||||
C --> M["学习路径(learning-path)"]
|
||||
C --> N["会员卡片(membership-grid)"]
|
||||
D --> O["AI卡片(ai-grid)"]
|
||||
E --> P["消息列表(chat-messages)"]
|
||||
E --> Q["快捷问题(quick-questions)"]
|
||||
E --> R["输入区(chat-input-area)"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1345-1412](file://index.html#L1345-L1412)
|
||||
- [index.html:1415-2002](file://index.html#L1415-L2002)
|
||||
- [index.html:2005-2142](file://index.html#L2005-L2142)
|
||||
- [index.html:2145-2179](file://index.html#L2145-L2179)
|
||||
|
||||
章节来源
|
||||
- [index.html:1345-2307](file://index.html#L1345-L2307)
|
||||
|
||||
## 核心组件
|
||||
- 页面容器与切换:通过统一的页面容器类与激活状态类实现页面切换,配合脚本函数完成显示/隐藏控制。
|
||||
- 登录页:强调品牌视觉与功能特性展示,结合登录表单与社交登录入口,营造信任与便捷感。
|
||||
- 仪表盘:以导航与标签页为核心,分模块呈现平台概览、教育、AI工具、校友与会员体系。
|
||||
- AI智能体页:集中展示各类AI助手卡片,支持快速对话与筛选。
|
||||
- 聊天弹窗:内嵌在任一页面,用于与AI助手进行对话交互。
|
||||
|
||||
章节来源
|
||||
- [index.html:41-49](file://index.html#L41-L49)
|
||||
- [index.html:1345-1412](file://index.html#L1345-L1412)
|
||||
- [index.html:1415-2002](file://index.html#L1415-L2002)
|
||||
- [index.html:2005-2142](file://index.html#L2005-L2142)
|
||||
- [index.html:2145-2179](file://index.html#L2145-L2179)
|
||||
|
||||
## 架构总览
|
||||
下图展示页面间的关系与交互流向,突出登录页到仪表盘的跳转、仪表盘内部的标签页切换以及AI页面与聊天弹窗的联动。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant LP as "登录页面(login-page)"
|
||||
participant DB as "仪表盘页面(dashboard-page)"
|
||||
participant AP as "AI智能体页面(ai-page)"
|
||||
participant CM as "聊天弹窗(chat-modal)"
|
||||
U->>LP : 访问登录页
|
||||
U->>LP : 输入账号/密码并提交
|
||||
LP-->>U : 显示错误提示或跳转
|
||||
LP-->>DB : 登录成功后切换至仪表盘
|
||||
U->>DB : 点击导航项/标签页
|
||||
DB-->>DB : 切换标签内容
|
||||
U->>AP : 点击导航进入AI页面
|
||||
U->>AP : 点击AI卡片
|
||||
AP-->>CM : 打开聊天弹窗
|
||||
U->>CM : 输入问题/点击快捷问题
|
||||
CM-->>U : 返回AI助手回复
|
||||
U->>CM : 关闭弹窗
|
||||
CM-->>AP : 隐藏弹窗
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:2181-2304](file://index.html#L2181-L2304)
|
||||
|
||||
章节来源
|
||||
- [index.html:2181-2304](file://index.html#L2181-L2304)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 登录页面设计
|
||||
- 设计理念
|
||||
- 品牌主色与渐变背景营造科技与专业的氛围;右侧登录表单采用卡片化设计,确保信息密度与可读性。
|
||||
- 左侧区域通过功能特性网格展示“有维教育+AI工具+有维校友”的三位一体价值主张,增强用户信任与期待。
|
||||
- 视觉元素
|
||||
- 主色调:品牌蓝紫与绿色,辅以暖色点缀,形成活力与稳重并存的视觉基调。
|
||||
- 渐变背景:采用线性渐变覆盖整个登录页,提升层次感与现代感。
|
||||
- 卡片与阴影:登录表单与特性卡片均采用圆角与阴影,强化立体感与可触达性。
|
||||
- 交互流程
|
||||
- 表单校验:用户名与密码非空即视为有效,直接跳转至仪表盘。
|
||||
- 社交登录:提供微信与手机验证码两种入口,降低首次使用门槛。
|
||||
- 注册引导:底部提供注册链接,便于转化。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["进入登录页"]) --> Form["填写账号/密码"]
|
||||
Form --> Submit{"提交按钮"}
|
||||
Submit --> |有效| Dashboard["跳转至仪表盘"]
|
||||
Submit --> |无效| Alert["提示输入完整"]
|
||||
Dashboard --> End(["完成"])
|
||||
Alert --> End
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1381-1398](file://index.html#L1381-L1398)
|
||||
- [index.html:2191-2202](file://index.html#L2191-L2202)
|
||||
|
||||
章节来源
|
||||
- [index.html:57-310](file://index.html#L57-L310)
|
||||
- [index.html:1345-1412](file://index.html#L1345-L1412)
|
||||
- [index.html:2191-2202](file://index.html#L2191-L2202)
|
||||
|
||||
### 仪表盘页面布局与导航
|
||||
- 整体布局
|
||||
- 顶部导航栏固定,包含Logo、主导航菜单与用户操作区,保证全局一致性与易访问性。
|
||||
- 内容区采用最大宽度与居中布局,确保在大屏下的良好留白与信息密度。
|
||||
- 导航系统
|
||||
- 主导航项支持悬停与选中态,选中项使用品牌色高亮,明确当前所在模块。
|
||||
- 通知图标带红点提醒,提升消息可见性。
|
||||
- 响应式设计
|
||||
- 在小屏设备上,导航菜单隐藏,移动端更关注顶部操作与内容展示。
|
||||
- 标签页在窄屏下允许横向滚动,避免布局破坏。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
NB["导航栏(navbar)"] --> NL["Logo与图标"]
|
||||
NB --> NM["主导航菜单(nav-menu)"]
|
||||
NB --> NU["用户操作(nav-user)"]
|
||||
DC["内容区(dashboard-content)"] --> DH["头部(dashboard-header)"]
|
||||
DC --> TN["标签页(nav)"]
|
||||
TN --> TC["标签内容(tab-content)"]
|
||||
TC --> SG["统计卡片(stats-grid)"]
|
||||
TC --> CC["内容卡片(content-card)"]
|
||||
CC --> CG["内容网格(content-grid)"]
|
||||
CC --> LG["学习路径(learning-path)"]
|
||||
TC --> MG["会员网格(membership-grid)"]
|
||||
TC --> CG2["课程网格(course-grid)"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:316-418](file://index.html#L316-L418)
|
||||
- [index.html:435-474](file://index.html#L435-L474)
|
||||
- [index.html:477-531](file://index.html#L477-L531)
|
||||
- [index.html:525-600](file://index.html#L525-L600)
|
||||
- [index.html:602-712](file://index.html#L602-L712)
|
||||
- [index.html:714-767](file://index.html#L714-L767)
|
||||
|
||||
章节来源
|
||||
- [index.html:316-767](file://index.html#L316-L767)
|
||||
|
||||
### CSS自定义属性系统与设计语言
|
||||
- 自定义属性体系
|
||||
- 色彩:主色、浅/深主色、辅助色、强调色;文本与边框色;背景与卡片背景。
|
||||
- 渐变:提供两个品牌渐变变量,用于背景与按钮等关键元素。
|
||||
- 阴影:提供多级阴影变量,统一卡片与浮层的投影风格。
|
||||
- 渐变与阴影应用
|
||||
- 登录页背景使用主渐变,登录表单与卡片使用阴影提升层级感。
|
||||
- 按钮与卡片悬停时叠加阴影,增强交互反馈。
|
||||
- 字体与排版
|
||||
- 使用系统字体栈,确保跨平台一致的阅读体验。
|
||||
- 标题字号逐级递减,段落与标签使用适中的字号与行高,保证可读性。
|
||||
|
||||
章节来源
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:34-38](file://index.html#L34-L38)
|
||||
- [index.html:58](file://index.html#L58)
|
||||
- [index.html:170](file://index.html#L170)
|
||||
- [index.html:489](file://index.html#L489)
|
||||
- [index.html:614](file://index.html#L614)
|
||||
|
||||
### 卡片式组件设计模式
|
||||
- 统计卡片:四列栅格布局,悬停轻微上移与阴影加深,突出可交互性。
|
||||
- 内容卡片:标题+描述+网格子项,子项采用悬停上移,增强探索感。
|
||||
- 课程卡片:图标+标题+描述+元信息,hover时阴影变化,引导点击。
|
||||
- 会员卡片:推荐卡片带“推荐”徽标与渐变背景,hover时整体上浮并加大阴影。
|
||||
- AI卡片:头像+标签+特性+按钮,hover时边框与阴影变化,突出差异化能力。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class StatCard {
|
||||
+图标
|
||||
+数值
|
||||
+标签
|
||||
+悬停上移
|
||||
+阴影加深
|
||||
}
|
||||
class ContentItem {
|
||||
+图标
|
||||
+标题
|
||||
+描述
|
||||
+列表
|
||||
+悬停上移
|
||||
}
|
||||
class CourseCard {
|
||||
+图标
|
||||
+标题
|
||||
+描述
|
||||
+元信息
|
||||
+悬停阴影
|
||||
}
|
||||
class MembershipCard {
|
||||
+标题
|
||||
+价格
|
||||
+描述
|
||||
+权益列表
|
||||
+推荐徽标
|
||||
+悬停上浮
|
||||
}
|
||||
class AiCard {
|
||||
+头像
|
||||
+标签
|
||||
+特性
|
||||
+按钮
|
||||
+悬停边框与阴影
|
||||
}
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:484-495](file://index.html#L484-L495)
|
||||
- [index.html:549-559](file://index.html#L549-L559)
|
||||
- [index.html:720-730](file://index.html#L720-L730)
|
||||
- [index.html:608-621](file://index.html#L608-L621)
|
||||
- [index.html:884-898](file://index.html#L884-L898)
|
||||
|
||||
章节来源
|
||||
- [index.html:484-767](file://index.html#L484-L767)
|
||||
|
||||
### 动画过渡与用户体验优化
|
||||
- 页面切换:统一的淡入动画,减少页面闪烁,提升流畅度。
|
||||
- 表单与按钮:输入框聚焦时边框与阴影变化,按钮悬停时阴影与位移,提供即时反馈。
|
||||
- 卡片交互:悬停上移与阴影变化,增强可点击感知。
|
||||
- 聊天弹窗:打开时滑入动画,关闭时淡出,避免突兀。
|
||||
- 快捷问题:点击即发送,降低输入成本,提升对话效率。
|
||||
|
||||
章节来源
|
||||
- [index.html:51-54](file://index.html#L51-L54)
|
||||
- [index.html:204-208](file://index.html#L204-L208)
|
||||
- [index.html:249-252](file://index.html#L249-L252)
|
||||
- [index.html:999](file://index.html#L999)
|
||||
- [index.html:1114](file://index.html#L1114)
|
||||
|
||||
### 移动端适配策略与断点
|
||||
- 断点策略
|
||||
- 大屏(≥1200px):登录页左右布局,特性卡片三列;统计、内容、AI网格两列;课程网格四列。
|
||||
- 中屏(≤1200px):登录页改为上下布局,特性卡片仍为三列;统计两列;内容网格两列;AI网格两列。
|
||||
- 小屏(≤768px):登录页表单占满宽度;导航菜单隐藏;仪表盘与AI页内容区缩进;统计、内容、会员、AI网格均为一列;课程网格两列;标签页支持横向滚动;聊天弹窗尺寸自适应。
|
||||
- 适配细节
|
||||
- 登录页标题字号与卡片间距按断点调整,确保可读性。
|
||||
- 导航栏在小屏下减少内边距,保证操作空间。
|
||||
- 表单控件与按钮在小屏下增大触摸面积,提升可用性。
|
||||
|
||||
章节来源
|
||||
- [index.html:1265-1340](file://index.html#L1265-L1340)
|
||||
|
||||
### UI组件使用指南与定制化建议
|
||||
- 登录表单
|
||||
- 可替换品牌渐变背景与主色系,保持与品牌VI一致。
|
||||
- 输入框可增加实时校验提示与错误状态样式。
|
||||
- 卡片组件
|
||||
- 统一使用阴影变量与圆角半径,确保视觉一致性。
|
||||
- 图标与颜色建议与业务语义绑定,如“教育”使用蓝色、“AI”使用绿色、“校友”使用橙色。
|
||||
- 导航与标签
|
||||
- 导航项数量与文案可根据业务演进调整;标签页支持动态增删。
|
||||
- 聊天弹窗
|
||||
- 支持消息气泡方向与头像位置的灵活配置;可扩展表情与文件上传等能力。
|
||||
- 响应式
|
||||
- 栅格列数与间距可按业务内容密度微调;小屏下优先保证核心信息可见。
|
||||
|
||||
章节来源
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:484-767](file://index.html#L484-L767)
|
||||
- [index.html:1265-1340](file://index.html#L1265-L1340)
|
||||
|
||||
## 依赖关系分析
|
||||
- 结构耦合
|
||||
- 页面容器与切换逻辑解耦于样式,便于独立维护。
|
||||
- 导航与标签页通过脚本控制,样式与行为分离清晰。
|
||||
- 组件依赖
|
||||
- 登录页依赖全局样式与动画;仪表盘依赖导航与标签页样式;AI页依赖卡片与聊天弹窗样式;聊天弹窗依赖消息列表与输入区样式。
|
||||
- 外部依赖
|
||||
- 无外部库依赖,纯原生HTML/CSS/JS实现,部署简单。
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Styles["全局样式与变量"] --> LoginPage["登录页"]
|
||||
Styles --> Dashboard["仪表盘"]
|
||||
Styles --> AiPage["AI智能体页"]
|
||||
Styles --> ChatModal["聊天弹窗"]
|
||||
Scripts["脚本逻辑"] --> LoginPage
|
||||
Scripts --> Dashboard
|
||||
Scripts --> AiPage
|
||||
Scripts --> ChatModal
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:7-1341](file://index.html#L7-L1341)
|
||||
- [index.html:2181-2304](file://index.html#L2181-L2304)
|
||||
|
||||
章节来源
|
||||
- [index.html:7-1341](file://index.html#L7-L1341)
|
||||
- [index.html:2181-2304](file://index.html#L2181-L2304)
|
||||
|
||||
## 性能考量
|
||||
- 样式体积:单文件内嵌样式,减少HTTP请求,利于首屏渲染。
|
||||
- 动画与阴影:合理使用阴影与过渡,避免过度复杂导致低端设备卡顿。
|
||||
- 响应式:断点数量适中,网格布局简洁,保证在移动设备上的流畅体验。
|
||||
- 交互反馈:按钮与卡片的悬停反馈轻量且即时,避免长耗时操作阻塞。
|
||||
|
||||
## 故障排查指南
|
||||
- 登录失败
|
||||
- 现象:输入账号/密码后无反应或提示错误。
|
||||
- 排查:确认表单字段值非空;检查脚本函数是否正确绑定;查看浏览器控制台是否有报错。
|
||||
- 页面切换异常
|
||||
- 现象:点击导航后页面未切换。
|
||||
- 排查:确认页面ID与脚本调用一致;检查样式类名拼写;验证脚本加载顺序。
|
||||
- 聊天弹窗无法关闭
|
||||
- 现象:点击遮罩或关闭按钮无响应。
|
||||
- 排查:检查弹窗类名与点击事件绑定;确认事件冒泡与阻止默认行为是否正确。
|
||||
- 响应式布局错乱
|
||||
- 现象:在特定屏幕尺寸下布局异常。
|
||||
- 排查:核对断点范围与媒体查询条件;检查栅格列数与间距是否与断点匹配。
|
||||
|
||||
章节来源
|
||||
- [index.html:2191-2202](file://index.html#L2191-L2202)
|
||||
- [index.html:2181-2304](file://index.html#L2181-L2304)
|
||||
- [index.html:1265-1340](file://index.html#L1265-L1340)
|
||||
|
||||
## 结论
|
||||
本设计以“有维商学”平台为目标,围绕登录与仪表盘两大核心页面,构建了统一的品牌视觉、清晰的导航与标签体系、丰富的卡片组件与流畅的交互体验。通过CSS自定义属性系统、渐变与阴影的规范应用,以及完善的响应式策略,实现了在多终端上的一致体验。建议后续在登录校验、消息系统与内容生态方面进一步完善,以支撑平台长期发展。
|
||||
|
||||
## 附录
|
||||
- 设计规范
|
||||
- 色彩:主色、辅助色、强调色、文本与边框色、背景与卡片背景。
|
||||
- 渐变:主渐变与辅助渐变,用于背景与关键按钮。
|
||||
- 阴影:多级阴影变量,统一卡片与浮层投影。
|
||||
- 字体:系统字体栈,标题与正文字号分级明确。
|
||||
- 字体排版
|
||||
- 标题:层级分明,强调品牌调性。
|
||||
- 正文:行高与字间距适中,保证可读性。
|
||||
- 响应式断点
|
||||
- ≥1200px:宽屏布局,信息密度高。
|
||||
- ≤1200px:中屏布局,适度压缩。
|
||||
- ≤768px:移动优先,简化导航与网格。
|
||||
|
||||
章节来源
|
||||
- [index.html:14-31](file://index.html#L14-L31)
|
||||
- [index.html:34-38](file://index.html#L34-L38)
|
||||
- [index.html:1265-1340](file://index.html#L1265-L1340)
|
||||
317
有维项目/.qoder/repowiki/zh/content/用户界面设计/登录页面设计.md
Normal file
317
有维项目/.qoder/repowiki/zh/content/用户界面设计/登录页面设计.md
Normal file
@@ -0,0 +1,317 @@
|
||||
# 登录页面设计
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [index.html](file://index.html)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构总览](#架构总览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
10. [附录](#附录)
|
||||
|
||||
## 简介
|
||||
本设计文档面向有维项目的登录页面,聚焦于整体视觉设计、布局结构与交互流程。文档从色彩与字体规范、渐变背景应用、卡片式表单设计理念、响应式布局实现、表单元素设计、社交登录按钮交互、功能特性卡片网格布局、以及移动端断点设置等方面进行全面解析,旨在为设计师与前端开发者提供完整的登录页面设计参考。
|
||||
|
||||
## 项目结构
|
||||
登录页面位于单一 HTML 文件中,采用内联样式与内联脚本的方式组织页面结构与交互逻辑。页面采用“页面容器 + 多页面切换”的结构,登录页为初始激活页面,其余页面(仪表盘、AI智能体等)在登录成功后切换显示。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A["index.html"] --> B["登录页面(login-page)"]
|
||||
A --> C["仪表盘页面(dashboard-page)"]
|
||||
A --> D["AI智能体页面(ai-page)"]
|
||||
B --> E["登录头部(login-header)"]
|
||||
B --> F["登录内容(login-content)"]
|
||||
F --> G["登录信息(login-info)"]
|
||||
F --> H["登录表单(login-form-container)"]
|
||||
H --> I["表单组(form-group)"]
|
||||
H --> J["选项区(form-options)"]
|
||||
H --> K["社交登录(social-login)"]
|
||||
H --> L["注册链接(register-link)"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1460-1528](file://index.html#L1460-L1528)
|
||||
|
||||
章节来源
|
||||
- [index.html:1460-1528](file://index.html#L1460-L1528)
|
||||
|
||||
## 核心组件
|
||||
- 渐变背景层:登录页采用主色调渐变背景,营造科技感与品牌识别度。
|
||||
- 卡片式表单容器:白色圆角卡片承载登录表单,配合阴影增强层级感。
|
||||
- 功能特性网格:三列卡片网格展示平台核心能力,增强用户对平台价值的认知。
|
||||
- 社交登录按钮:微信与手机验证码两种社交登录入口,统一风格与交互反馈。
|
||||
- 响应式布局:针对桌面端与移动端的不同断点,调整布局与元素尺寸。
|
||||
|
||||
章节来源
|
||||
- [index.html:167-176](file://index.html#L167-L176)
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
- [index.html:233-274](file://index.html#L233-L274)
|
||||
- [index.html:384-419](file://index.html#L384-L419)
|
||||
- [index.html:1374-1450](file://index.html#L1374-L1450)
|
||||
|
||||
## 架构总览
|
||||
登录页面的控制流围绕“页面切换 + 表单提交 + 加载遮罩 + 用户菜单”展开。登录成功后,页面切换至仪表盘,并更新用户头像与显示名称;用户可通过顶部导航访问不同页面。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as "用户"
|
||||
participant LP as "登录页面"
|
||||
participant JS as "脚本逻辑"
|
||||
participant DP as "仪表盘页面"
|
||||
U->>LP : 输入账号/密码并点击登录
|
||||
LP->>JS : 触发表单提交事件
|
||||
JS->>JS : 验证输入是否为空
|
||||
JS->>LP : 显示登录加载遮罩
|
||||
JS->>JS : 模拟登录处理
|
||||
JS->>DP : 切换到仪表盘页面
|
||||
JS->>DP : 更新用户头像与显示名称
|
||||
JS-->>U : 展示登录后的功能页面
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:2344-2364](file://index.html#L2344-L2364)
|
||||
- [index.html:2336-2342](file://index.html#L2336-L2342)
|
||||
- [index.html:2366-2377](file://index.html#L2366-L2377)
|
||||
|
||||
章节来源
|
||||
- [index.html:2331-2537](file://index.html#L2331-L2537)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 渐变背景与视觉层次
|
||||
- 登录页背景采用主色调渐变,提升品牌识别度与现代感。
|
||||
- 卡片容器使用纯白背景与阴影,形成清晰的视觉层级。
|
||||
- 文字与图标采用高对比度配色,确保可读性与一致性。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["登录页渲染"]) --> BG["应用渐变背景"]
|
||||
BG --> Card["卡片容器(白色背景+阴影)"]
|
||||
Card --> Text["标题/副标题/说明文本"]
|
||||
Text --> Icons["功能图标/装饰图标"]
|
||||
Icons --> End(["完成渲染"])
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:167-176](file://index.html#L167-L176)
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
- [index.html:215-274](file://index.html#L215-L274)
|
||||
|
||||
章节来源
|
||||
- [index.html:7-31](file://index.html#L7-L31)
|
||||
- [index.html:167-176](file://index.html#L167-L176)
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
|
||||
### 登录表单容器与布局
|
||||
- 容器尺寸与内边距:宽度固定且具备充足内边距,保证在不同屏幕下的可读性与舒适度。
|
||||
- 标题与副标题:强调欢迎语与登录提示,引导用户完成登录动作。
|
||||
- 表单分组:输入标签与输入框采用一致的间距与字号,保持视觉统一。
|
||||
- 选项区:记住我与忘记密码链接并列,便于用户操作。
|
||||
- 登录按钮:采用渐变背景与悬停阴影,突出交互意图。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class LoginFormContainer {
|
||||
+宽度 : 固定
|
||||
+内边距 : 充足
|
||||
+标题 : 欢迎回来
|
||||
+副标题 : 登录账户
|
||||
+表单组 : 标签+输入框
|
||||
+选项区 : 记住我+忘记密码
|
||||
+登录按钮 : 渐变背景
|
||||
}
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
- [index.html:283-292](file://index.html#L283-L292)
|
||||
- [index.html:294-318](file://index.html#L294-L318)
|
||||
- [index.html:320-344](file://index.html#L320-L344)
|
||||
- [index.html:346-362](file://index.html#L346-L362)
|
||||
|
||||
章节来源
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
- [index.html:283-292](file://index.html#L283-L292)
|
||||
- [index.html:294-318](file://index.html#L294-L318)
|
||||
- [index.html:320-344](file://index.html#L320-L344)
|
||||
- [index.html:346-362](file://index.html#L346-L362)
|
||||
|
||||
### 输入字段与交互反馈
|
||||
- 输入框边框与焦点态:统一的边框颜色与焦点态阴影,提供明确的交互反馈。
|
||||
- 选中态与过渡:平滑的过渡动画提升用户体验。
|
||||
- 记住我选项:使用品牌色作为选中色,符合品牌调性。
|
||||
- 忘记密码链接:采用品牌主色,便于识别与点击。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Focus["用户聚焦输入框"] --> Border["边框变为品牌色"]
|
||||
Border --> Shadow["添加轻微阴影"]
|
||||
Blur["用户失焦"] --> Reset["恢复默认样式"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:305-318](file://index.html#L305-L318)
|
||||
- [index.html:334-338](file://index.html#L334-L338)
|
||||
- [index.html:340-344](file://index.html#L340-L344)
|
||||
|
||||
章节来源
|
||||
- [index.html:305-318](file://index.html#L305-L318)
|
||||
- [index.html:334-338](file://index.html#L334-L338)
|
||||
- [index.html:340-344](file://index.html#L340-L344)
|
||||
|
||||
### 社交登录按钮设计与交互
|
||||
- 按钮风格:统一的边框、圆角、内边距与过渡动画,保持视觉一致性。
|
||||
- 悬停效果:边框与背景色变化,提供明确的交互反馈。
|
||||
- 图标与文案:图标与文案组合,增强识别度与亲和力。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class SocialButton {
|
||||
+样式 : 统一边框/圆角/内边距
|
||||
+交互 : 悬停改变边框与背景
|
||||
+内容 : 图标+文案
|
||||
}
|
||||
SocialButton <|-- WeChatBtn["微信按钮"]
|
||||
SocialButton <|-- SMSBtn["手机验证码按钮"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:389-407](file://index.html#L389-L407)
|
||||
- [index.html:1518-1521](file://index.html#L1518-L1521)
|
||||
|
||||
章节来源
|
||||
- [index.html:389-407](file://index.html#L389-L407)
|
||||
- [index.html:1518-1521](file://index.html#L1518-L1521)
|
||||
|
||||
### 功能特性卡片网格布局
|
||||
- 网格结构:三列等宽网格,展示平台三大核心能力。
|
||||
- 卡片设计:半透明背景与模糊滤镜,营造通透感;悬停提升与背景加深,增强交互反馈。
|
||||
- 图标与文案:图标统一尺寸与圆角,文案采用分级字号,层次清晰。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Grid["三列网格布局"] --> Card1["卡片1: 有维教育"]
|
||||
Grid --> Card2["卡片2: AI工具"]
|
||||
Grid --> Card3["卡片3: 有维校友"]
|
||||
Card1 --> Hover1["悬停: 提升+加深背景"]
|
||||
Card2 --> Hover2["悬停: 提升+加深背景"]
|
||||
Card3 --> Hover3["悬停: 提升+加深背景"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:233-274](file://index.html#L233-L274)
|
||||
- [index.html:1474-1490](file://index.html#L1474-L1490)
|
||||
|
||||
章节来源
|
||||
- [index.html:233-274](file://index.html#L233-L274)
|
||||
- [index.html:1474-1490](file://index.html#L1474-L1490)
|
||||
|
||||
### 响应式布局与断点设置
|
||||
- 桌面端断点:1200px以下,登录内容改为纵向堆叠,功能特性网格仍为三列。
|
||||
- 移动端断点:768px以下,登录内容进一步优化,功能特性网格变为单列,表单容器自适应宽度,导航菜单隐藏,网格布局调整为单列或两列。
|
||||
- 弹窗与输入区域:聊天弹窗在移动端缩小尺寸,输入区域适配触摸屏。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Desktop["桌面端 > 1200px"] --> Layout1["登录内容横向排列"]
|
||||
Desktop --> Grid1["功能特性三列网格"]
|
||||
Tablet["平板端 768px~1200px"] --> Layout2["登录内容纵向堆叠"]
|
||||
Tablet --> Grid2["功能特性三列网格"]
|
||||
Mobile["移动端 < 768px"] --> Layout3["登录内容纵向堆叠+自适应宽度"]
|
||||
Mobile --> Grid3["功能特性单列网格"]
|
||||
Mobile --> NavHide["导航菜单隐藏"]
|
||||
Mobile --> ChatSmall["聊天弹窗尺寸缩小"]
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:1374-1450](file://index.html#L1374-L1450)
|
||||
|
||||
章节来源
|
||||
- [index.html:1374-1450](file://index.html#L1374-L1450)
|
||||
|
||||
### 色彩搭配与字体选择
|
||||
- 主色调:品牌主色用于按钮、图标与链接,确保品牌一致性。
|
||||
- 辅助色:绿色用于成功类元素,橙色用于强调信息。
|
||||
- 字体:采用系统字体栈,保证跨平台兼容性与可读性。
|
||||
- 文字层级:标题、副标题、正文与说明采用不同的字号与字重,形成清晰的信息层级。
|
||||
|
||||
章节来源
|
||||
- [index.html:7-31](file://index.html#L7-L31)
|
||||
- [index.html:33-38](file://index.html#L33-L38)
|
||||
- [index.html:215-231](file://index.html#L215-L231)
|
||||
|
||||
### 间距规范
|
||||
- 页面外边距:登录页采用全高布局,内容区域在桌面端具有较大的左右边距。
|
||||
- 卡片内边距:表单容器与功能卡片均采用较大的内边距,确保内容不拥挤。
|
||||
- 行间距:段落与列表项之间采用统一的行高与间距,提升阅读体验。
|
||||
- 交互元素间距:按钮、输入框与标签之间的间距保持一致,避免视觉混乱。
|
||||
|
||||
章节来源
|
||||
- [index.html:215-213](file://index.html#L215-L231)
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
- [index.html:294-318](file://index.html#L294-L318)
|
||||
|
||||
## 依赖关系分析
|
||||
登录页面的样式与脚本相互依赖,共同构成完整的登录体验:
|
||||
- 样式依赖:登录页背景、卡片容器、表单元素、社交按钮、网格布局等样式共同作用,形成统一的视觉语言。
|
||||
- 脚本依赖:页面切换、登录处理、用户菜单、聊天弹窗等功能脚本依赖于对应 DOM 结构与样式类名。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
Styles["样式定义"] --> LoginPage["登录页样式"]
|
||||
Styles --> FormStyles["表单样式"]
|
||||
Styles --> SocialStyles["社交按钮样式"]
|
||||
Styles --> GridStyles["网格样式"]
|
||||
Scripts["脚本逻辑"] --> PageSwitch["页面切换"]
|
||||
Scripts --> LoginHandler["登录处理"]
|
||||
Scripts --> UserMenu["用户菜单"]
|
||||
Scripts --> ChatModal["聊天弹窗"]
|
||||
LoginPage --> PageSwitch
|
||||
FormStyles --> LoginHandler
|
||||
SocialStyles --> PageSwitch
|
||||
GridStyles --> PageSwitch
|
||||
```
|
||||
|
||||
图表来源
|
||||
- [index.html:7-31](file://index.html#L7-L31)
|
||||
- [index.html:167-176](file://index.html#L167-L176)
|
||||
- [index.html:275-281](file://index.html#L275-L281)
|
||||
- [index.html:384-419](file://index.html#L384-L419)
|
||||
- [index.html:2331-2537](file://index.html#L2331-L2537)
|
||||
|
||||
章节来源
|
||||
- [index.html:7-31](file://index.html#L7-L31)
|
||||
- [index.html:2331-2537](file://index.html#L2331-L2537)
|
||||
|
||||
## 性能考虑
|
||||
- 渐变背景与模糊滤镜:在低端设备上可能影响渲染性能,建议在移动端适当简化滤镜效果。
|
||||
- 动画与过渡:适度的过渡动画可提升体验,但需避免过度使用导致卡顿。
|
||||
- 资源加载:登录页为静态页面,无需额外资源加载;若后续引入图片或字体,建议使用懒加载与缓存策略。
|
||||
|
||||
## 故障排除指南
|
||||
- 登录按钮无响应:检查表单提交事件绑定与输入验证逻辑。
|
||||
- 页面切换异常:确认页面切换函数与 DOM 元素 ID 是否正确。
|
||||
- 用户菜单无法关闭:检查点击外部关闭逻辑与事件监听器。
|
||||
- 聊天弹窗无法打开:确认弹窗触发函数与 DOM 结构是否匹配。
|
||||
|
||||
章节来源
|
||||
- [index.html:2344-2364](file://index.html#L2344-L2364)
|
||||
- [index.html:2336-2342](file://index.html#L2336-L2342)
|
||||
- [index.html:2394-2405](file://index.html#L2394-L2405)
|
||||
- [index.html:2447-2468](file://index.html#L2447-L2468)
|
||||
|
||||
## 结论
|
||||
有维项目的登录页面通过统一的渐变背景、卡片式表单与清晰的功能特性网格,构建了现代、专业的登录体验。配合完善的响应式断点与交互细节,能够在不同设备上提供一致且高效的登录流程。建议在后续迭代中关注性能优化与可访问性提升,以进一步完善用户体验。
|
||||
|
||||
## 附录
|
||||
- 设计要点速查:渐变背景、卡片容器、输入反馈、社交按钮、网格布局、响应式断点。
|
||||
- 开发建议:保持样式与脚本的解耦,合理使用过渡动画,确保移动端交互流畅。
|
||||
Reference in New Issue
Block a user