431 lines
10 KiB
Markdown
431 lines
10 KiB
Markdown
|
|
# 📋 VPS Price - 列表模式对比功能
|
|||
|
|
|
|||
|
|
## ✨ v3.3 List Comparison
|
|||
|
|
|
|||
|
|
### 实现时间
|
|||
|
|
**2026-02-09**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 设计理念
|
|||
|
|
|
|||
|
|
### 用户需求
|
|||
|
|
> "优化价格比对界面,我希望是像左侧vps列表一样的列表,然后对比价格整个模块能收起来,不是单个收起来"
|
|||
|
|
|
|||
|
|
### 解决方案
|
|||
|
|
**整体可折叠的表格列表**:
|
|||
|
|
- ✅ 像左侧 VPS 列表一样的表格样式
|
|||
|
|
- ✅ 整个对比模块可以收起/展开
|
|||
|
|
- ✅ 清晰的表头和数据行
|
|||
|
|
- ✅ 行悬停高亮效果
|
|||
|
|
- ✅ 紧凑的数据展示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 核心功能
|
|||
|
|
|
|||
|
|
### 1. 整体可折叠 🔽
|
|||
|
|
|
|||
|
|
**设计特点**
|
|||
|
|
- 整个对比面板可以收起/展开
|
|||
|
|
- 点击"收起对比"按钮折叠
|
|||
|
|
- 收起后显示"展开对比 (N)"
|
|||
|
|
- 按钮文字和图标动态切换
|
|||
|
|
|
|||
|
|
**视觉示例**
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────┐
|
|||
|
|
│ 📋 方案对比 [▼ 收起对比] [✕] │ ← 展开状态
|
|||
|
|
├─────────────────────────────────────────┤
|
|||
|
|
│ ┌─────────────────────────────────────┐ │
|
|||
|
|
│ │ 厂商 │ 配置 │ CPU │ 内存 │ 价格 │ │ │
|
|||
|
|
│ ├─────────────────────────────────────┤ │
|
|||
|
|
│ │ 阿里云 │ 2核4G │ 2 │ 4GB │ ¥88 │ │ │
|
|||
|
|
│ │ 腾讯云 │ 2核4G │ 2 │ 4GB │ ¥95 │ │ │
|
|||
|
|
│ └─────────────────────────────────────┘ │
|
|||
|
|
└─────────────────────────────────────────┘
|
|||
|
|
|
|||
|
|
┌─────────────────────────────────────────┐
|
|||
|
|
│ 📋 方案对比 [▶ 展开对比 (2)] [✕] │ ← 收起状态
|
|||
|
|
└─────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 表格列表样式 📊
|
|||
|
|
|
|||
|
|
**显示内容**
|
|||
|
|
- **厂商**:阿里云、腾讯云等(加粗高亮)
|
|||
|
|
- **配置**:2核4G香港
|
|||
|
|
- **vCPU**:2 核
|
|||
|
|
- **内存**:4 GB
|
|||
|
|
- **存储**:40 GB
|
|||
|
|
- **带宽**:5 Mbps
|
|||
|
|
- **流量**:不限
|
|||
|
|
- **区域**:中国香港
|
|||
|
|
- **价格**:¥88(绿色高亮)
|
|||
|
|
- **操作**:访问、移除
|
|||
|
|
|
|||
|
|
**优势**
|
|||
|
|
- 像左侧 VPS 列表一样的布局
|
|||
|
|
- 清晰的表头和数据行
|
|||
|
|
- 一目了然的对比信息
|
|||
|
|
- 紧凑高效的数据展示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. 行悬停高亮 🎨
|
|||
|
|
|
|||
|
|
**交互方式**
|
|||
|
|
- 鼠标悬停在表格行上
|
|||
|
|
- 整行背景色变化
|
|||
|
|
- 平滑过渡动画(150ms)
|
|||
|
|
|
|||
|
|
**视觉效果**
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────┐
|
|||
|
|
│ 阿里云 │ 2核4G │ 2 │ 4GB │ ¥88 │ [访问] │ ← 普通状态
|
|||
|
|
├─────────────────────────────────────────┤
|
|||
|
|
│ 腾讯云 │ 2核4G │ 2 │ 4GB │ ¥95 │ [访问] │ ← 悬停高亮
|
|||
|
|
├─────────────────────────────────────────┤
|
|||
|
|
│ Vultr │ 2核4G │ 2 │ 4GB │ ¥78 │ [访问] │ ← 普通状态
|
|||
|
|
└─────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4. 快速操作 ⚡
|
|||
|
|
|
|||
|
|
**操作按钮**
|
|||
|
|
- **访问官网**:跳转到厂商官网
|
|||
|
|
- **移除对比**:从对比列表移除
|
|||
|
|
- **清空所有**:清空所有对比方案
|
|||
|
|
|
|||
|
|
**按钮位置**
|
|||
|
|
- 访问按钮:每行右侧
|
|||
|
|
- 移除按钮:每行最右侧
|
|||
|
|
- 清空按钮:标题栏右侧
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5. 响应式设计 📱
|
|||
|
|
|
|||
|
|
**桌面端(> 768px)**
|
|||
|
|
- 完整表格显示所有列
|
|||
|
|
- 横向操作按钮
|
|||
|
|
- 宽松的间距
|
|||
|
|
|
|||
|
|
**移动端(< 768px)**
|
|||
|
|
- 纵向操作按钮
|
|||
|
|
- 紧凑的间距
|
|||
|
|
- 优化的字体大小
|
|||
|
|
|
|||
|
|
**小屏幕(< 640px)**
|
|||
|
|
- 隐藏带宽和流量列
|
|||
|
|
- 更小的字体
|
|||
|
|
- 最小化间距
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📖 使用指南
|
|||
|
|
|
|||
|
|
### 基础操作
|
|||
|
|
|
|||
|
|
#### 1. 添加对比方案
|
|||
|
|
```
|
|||
|
|
1. 在左侧表格点击星标 ☆
|
|||
|
|
2. 右侧对比面板显示表格
|
|||
|
|
3. 默认状态:展开
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2. 收起对比面板
|
|||
|
|
```
|
|||
|
|
1. 点击"收起对比"按钮
|
|||
|
|
2. 对比面板折叠
|
|||
|
|
3. 按钮变为"展开对比 (N)"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3. 展开对比面板
|
|||
|
|
```
|
|||
|
|
1. 点击"展开对比 (N)"按钮
|
|||
|
|
2. 对比面板展开
|
|||
|
|
3. 显示完整表格
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4. 查看详情
|
|||
|
|
```
|
|||
|
|
1. 鼠标悬停在表格行上
|
|||
|
|
2. 整行高亮显示
|
|||
|
|
3. 查看完整信息
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5. 访问官网
|
|||
|
|
```
|
|||
|
|
1. 点击行右侧的"访问"按钮
|
|||
|
|
2. 新标签页打开官网
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 6. 移除方案
|
|||
|
|
```
|
|||
|
|
方法 1:点击行右侧的 ✕ 按钮
|
|||
|
|
方法 2:点击左侧表格的星标 ★
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 7. 清空所有
|
|||
|
|
```
|
|||
|
|
点击标题栏右侧的 ✕ 按钮
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎨 视觉设计
|
|||
|
|
|
|||
|
|
### 布局结构
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────┐
|
|||
|
|
│ 📋 方案对比 [▼ 收起对比] [✕] │ ← 标题栏
|
|||
|
|
├─────────────────────────────────────────┤
|
|||
|
|
│ ┌─────────────────────────────────────┐ │
|
|||
|
|
│ │ 表头行 │ │ ← 表头
|
|||
|
|
│ ├─────────────────────────────────────┤ │
|
|||
|
|
│ │ 数据行 1 │ │ ← 数据
|
|||
|
|
│ │ 数据行 2 │ │
|
|||
|
|
│ │ 数据行 3 │ │
|
|||
|
|
│ └─────────────────────────────────────┘ │
|
|||
|
|
└─────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 颜色方案
|
|||
|
|
```css
|
|||
|
|
/* 表头背景 */
|
|||
|
|
--bg-elevated: #F1F5F9
|
|||
|
|
|
|||
|
|
/* 行悬停 */
|
|||
|
|
--bg-elevated: #F1F5F9
|
|||
|
|
|
|||
|
|
/* 边框 */
|
|||
|
|
--border: #E2E8F0
|
|||
|
|
|
|||
|
|
/* 厂商名称 */
|
|||
|
|
--accent: #0369A1
|
|||
|
|
|
|||
|
|
/* 价格 */
|
|||
|
|
--green: #059669
|
|||
|
|
|
|||
|
|
/* 按钮悬停 */
|
|||
|
|
--accent-dark: #075985
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 动画效果
|
|||
|
|
```css
|
|||
|
|
/* 行悬停动画 */
|
|||
|
|
transition: background-color 0.15s;
|
|||
|
|
|
|||
|
|
/* 按钮悬停 */
|
|||
|
|
transition: all 0.2s;
|
|||
|
|
transform: translateY(-1px);
|
|||
|
|
|
|||
|
|
/* 折叠动画 */
|
|||
|
|
display: none; /* 收起状态 */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 💻 技术实现
|
|||
|
|
|
|||
|
|
### 核心数据结构
|
|||
|
|
```javascript
|
|||
|
|
var isComparisonExpanded = true; // 对比面板展开状态
|
|||
|
|
|
|||
|
|
// 切换展开状态
|
|||
|
|
function toggleComparisonPanel() {
|
|||
|
|
isComparisonExpanded = !isComparisonExpanded;
|
|||
|
|
updateComparison();
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 表格渲染逻辑
|
|||
|
|
```javascript
|
|||
|
|
function renderComparisonTable() {
|
|||
|
|
var html = '<table class="comparison-table">';
|
|||
|
|
|
|||
|
|
// 表头
|
|||
|
|
html += '<thead><tr>';
|
|||
|
|
html += '<th>厂商</th><th>配置</th>...';
|
|||
|
|
html += '</tr></thead>';
|
|||
|
|
|
|||
|
|
// 表体
|
|||
|
|
html += '<tbody>';
|
|||
|
|
comparisonPlans.forEach(function(plan) {
|
|||
|
|
html += '<tr class="comparison-row">';
|
|||
|
|
html += '<td>' + plan.provider + '</td>';
|
|||
|
|
// ...
|
|||
|
|
html += '</tr>';
|
|||
|
|
});
|
|||
|
|
html += '</tbody></table>';
|
|||
|
|
|
|||
|
|
return html;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 折叠控制
|
|||
|
|
```javascript
|
|||
|
|
function updateComparison() {
|
|||
|
|
var panel = document.getElementById('comparison-panel');
|
|||
|
|
var toggleBtn = document.getElementById('btn-toggle-comparison');
|
|||
|
|
|
|||
|
|
if (isComparisonExpanded) {
|
|||
|
|
panel.classList.remove('collapsed');
|
|||
|
|
toggleBtn.innerHTML = '▼ 收起对比';
|
|||
|
|
} else {
|
|||
|
|
panel.classList.add('collapsed');
|
|||
|
|
toggleBtn.innerHTML = '▶ 展开对比 (' + count + ')';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### CSS 折叠实现
|
|||
|
|
```css
|
|||
|
|
/* 默认展开 */
|
|||
|
|
.comparison-content {
|
|||
|
|
display: block;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 收起状态 */
|
|||
|
|
.comparison-panel.collapsed .comparison-content {
|
|||
|
|
display: none;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 性能优化
|
|||
|
|
|
|||
|
|
### 已实施
|
|||
|
|
- ✅ 简单的 display 切换(无动画开销)
|
|||
|
|
- ✅ 事件委托减少监听器
|
|||
|
|
- ✅ 按需渲染表格内容
|
|||
|
|
- ✅ CSS transform 硬件加速
|
|||
|
|
|
|||
|
|
### 性能指标
|
|||
|
|
- 折叠/展开:< 10ms
|
|||
|
|
- 表格渲染:< 50ms
|
|||
|
|
- 行悬停响应:< 20ms
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 使用场景
|
|||
|
|
|
|||
|
|
### 场景 1:快速对比价格
|
|||
|
|
```
|
|||
|
|
1. 收藏 2-3 个方案
|
|||
|
|
2. 查看表格对比价格
|
|||
|
|
3. 选择最优方案
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景 2:节省屏幕空间
|
|||
|
|
```
|
|||
|
|
1. 收起对比面板
|
|||
|
|
2. 专注浏览左侧列表
|
|||
|
|
3. 需要时再展开对比
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景 3:详细查看配置
|
|||
|
|
```
|
|||
|
|
1. 展开对比面板
|
|||
|
|
2. 鼠标悬停查看详情
|
|||
|
|
3. 点击访问官网
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📱 响应式设计
|
|||
|
|
|
|||
|
|
### 桌面端(> 768px)
|
|||
|
|
- 表格:10列完整显示
|
|||
|
|
- 操作按钮:横向排列
|
|||
|
|
- 间距:宽松舒适
|
|||
|
|
|
|||
|
|
### 移动端(< 768px)
|
|||
|
|
- 表格:自适应宽度
|
|||
|
|
- 操作按钮:纵向排列
|
|||
|
|
- 间距:紧凑高效
|
|||
|
|
|
|||
|
|
### 小屏幕(< 640px)
|
|||
|
|
- 表格:隐藏带宽和流量列
|
|||
|
|
- 字体:更小的尺寸
|
|||
|
|
- 间距:最小化
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📁 文件变更
|
|||
|
|
|
|||
|
|
### 新增文件
|
|||
|
|
```
|
|||
|
|
static/js/main-comparison-list.js (25 KB, 520 行)
|
|||
|
|
LIST_COMPARISON.md (本文件)
|
|||
|
|
test_list_comparison.sh (测试脚本)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 修改文件
|
|||
|
|
```
|
|||
|
|
static/css/style.css (新增 200+ 行样式)
|
|||
|
|
templates/index.html (添加折叠按钮,更新 JS 引用)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 备份文件
|
|||
|
|
```
|
|||
|
|
static/js/main-comparison-table.js (v3.2 表格版)
|
|||
|
|
static/js/main-comparison-enhanced.js (v3.1 增强版)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎉 功能对比
|
|||
|
|
|
|||
|
|
### v3.2 → v3.3
|
|||
|
|
|
|||
|
|
| 功能 | v3.2 表格版 | v3.3 列表版 |
|
|||
|
|
|------|------------|------------|
|
|||
|
|
| 分屏布局 | ✅ | ✅ |
|
|||
|
|
| 实时对比 | ✅ | ✅ |
|
|||
|
|
| 智能高亮 | ✅ | ✅ |
|
|||
|
|
| 可折叠布局 | ✅ 单个行 | ✅ 整体面板 |
|
|||
|
|
| 表格样式 | ❌ | ✅ |
|
|||
|
|
| 行悬停高亮 | ❌ | ✅ |
|
|||
|
|
| 快速预览 | ✅ | ✅ |
|
|||
|
|
| 紧凑展示 | ✅ | ✅ |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 立即体验
|
|||
|
|
|
|||
|
|
### 访问地址
|
|||
|
|
```
|
|||
|
|
http://127.0.0.1:5001
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 强制刷新
|
|||
|
|
```
|
|||
|
|
Mac: Cmd + Shift + R
|
|||
|
|
Windows: Ctrl + Shift + R
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测试步骤
|
|||
|
|
1. ⭐ 点击 2-3 个方案的星标
|
|||
|
|
2. 👀 查看右侧对比面板(表格模式)
|
|||
|
|
3. 🔽 点击"收起对比"按钮
|
|||
|
|
4. 🔼 点击"展开对比 (N)"按钮
|
|||
|
|
5. 🖱️ 鼠标悬停在表格行上查看高亮
|
|||
|
|
6. 🔗 点击"访问"按钮测试跳转
|
|||
|
|
7. ❌ 点击"✕"按钮移除单个方案
|
|||
|
|
8. 🗑️ 点击右上角"✕"清空所有对比
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**开发者**:Claude Sonnet 4.5
|
|||
|
|
**版本**:v3.3 List Comparison
|
|||
|
|
**实现日期**:2026-02-09
|
|||
|
|
|
|||
|
|
🎊 **整体折叠,表格清晰!**
|