Private
Public Access
1
0
Files
u-desk/docs/07-项目管理/项目规划/action-area-redesign.md

13 KiB
Raw Blame History

操作区域重新设计

设计理念

从"按钮"到"操作卡片"

传统按钮虽然常见,但缺乏信息层次和视觉吸引力。我们采用卡片式操作区域,提供:

  • 更大的点击区域
  • 更清晰的说明文字
  • 更丰富的视觉信息
  • 更现代的设计风格

优化前后对比

优化前(传统按钮)

┌──────────────────────────────────────────────┐
│                                              │
│                       [ 跳过此版本 ]          │ ← 传统按钮
│                       [ 立即更新 ↓ ]          │
│                                              │
│ ☐ 提醒我稍后更新                             │ ← 复选框
└──────────────────────────────────────────────┘

问题:

  • 信息量少,只显示操作名称
  • 说明文字(复选框)分离,不连贯
  • 视觉单调,缺乏层次
  • 点击区域较小

优化后(操作卡片)

┌──────────────────────────────────────────────┐
│                                              │
│ ┌────────────────────────────────────────┐  │
│ │ ✕ 稍后更新                             │  │ ← 图标 + 标题 + 说明
│ │    跳过此版本,下次启动时再提醒         │  │
│ └────────────────────────────────────────┘  │
│                                              │
│ ┌────────────────────────────────────────┐  │
│ │ ↓ 立即更新到最新版本                → │  │ ← 主操作(突出)
│ │    点击下载 45.2 MB 安装包            │  │
│ └────────────────────────────────────────┘  │
│                                              │
│     ☐ 下次启动时继续提醒我                   │ ← 提醒选项
└──────────────────────────────────────────────┘

优势:

  • 每个操作都有清晰的说明
  • 信息层次分明(图标 + 标题 + 描述)
  • 更大的点击区域
  • 视觉更丰富、更现代

设计细节

1. 稍后更新(次要操作)

<div class="action-item skip-action" @click="handleSkip">
  <div class="action-content">
    <icon-close class="action-icon" />
    <div class="action-text">
      <div class="action-title">稍后更新</div>
      <div class="action-desc">跳过此版本下次启动时再提醒</div>
    </div>
  </div>
</div>

样式:

  • 图标:关闭图标(✕)- 表示跳过
  • 背景:浅灰色(var(--color-fill-3)
  • 悬停效果:轻微上移
  • 说明文字:灰色小字

2. 立即更新(主要操作)

<div class="action-item primary-action" @click="handleDownload">
  <div class="action-content">
    <icon-download class="action-icon" />
    <div class="action-text">
      <div class="action-title">立即更新到最新版本</div>
      <div class="action-desc">点击下载 45.2 MB 安装包</div>
    </div>
    <div class="action-arrow">
      <icon-arrow-right />
    </div>
  </div>
</div>

样式:

  • 图标:下载图标(↓)- 蓝色背景
  • 背景:主题色背景(var(--color-primary-light-1)
  • 右侧箭头:→ 表示进入下一步
  • 悬停效果:
    • 背景变为主题色
    • 图标变为白色
    • 箭头向右移动

3. 安装中状态

<div class="action-item installing-action">
  <div class="action-content">
    <icon-loading class="action-icon spinning" />
    <div class="action-text">
      <div class="action-title">正在安装更新</div>
      <div class="action-desc">安装完成后应用将自动重启请稍候...</div>
    </div>
  </div>
</div>

样式:

  • 图标:加载图标(旋转动画)
  • 背景:绿色背景(成功色)
  • 不可点击(pointer-events: none
  • 图标旋转动画

交互设计

悬停效果

普通状态:

┌────────────────────────────────────────┐
│ ↓ 立即更新到最新版本                → │
│    点击下载 45.2 MB 安装包            │
└────────────────────────────────────────┘
背景:浅色
图标:蓝色背景,白色图标
箭头:深灰色,固定位置

悬停状态:

┌────────────────────────────────────────┐
│ ↓ 立即更新到最新版本                → │  ← 箭头右移
│    点击下载 45.2 MB 安装包            │
└────────────────────────────────────────┘
背景:主题色
图标:白色背景,蓝色图标
箭头:主题色,向右移动 4px

点击反馈

悬停 → 上移 1px
点击 → 下移 0px回到原位

加载状态

┌────────────────────────────────────────┐
│ ⟳ 立即更新到最新版本                   │  ← 图标脉冲动画
│    正在准备下载...                    │
└────────────────────────────────────────┘
不透明度0.6
不可点击

完整样式代码

.action-section {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.action-item {
  background: var(--color-fill-1);
  border: 1px solid var(--color-border-1);
  border-radius: 8px;
  padding: 16px;
  cursor: pointer;
  transition: all 0.2s ease;

  &:hover {
    background: var(--color-fill-2);
    border-color: var(--color-border-2);
    transform: translateY(-1px);
  }

  &:active {
    transform: translateY(0);
  }

  .action-content {
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .action-icon {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-fill-3);
    color: var(--color-text-2);
    border-radius: 8px;
    font-size: 18px;
    flex-shrink: 0;
  }

  .action-text {
    flex: 1;
  }

  .action-title {
    font-size: 14px;
    font-weight: 500;
    color: var(--color-text-1);
    margin-bottom: 2px;
  }

  .action-desc {
    font-size: 12px;
    color: var(--color-text-3);
  }

  .action-arrow {
    color: var(--color-text-3);
    font-size: 16px;
    transition: all 0.2s ease;
  }

  &:hover .action-arrow {
    color: var(--color-text-1);
    transform: translateX(4px);
  }
}

.primary-action {
  background: var(--color-fill-2);
  border-color: var(--color-border-2);

  .action-icon {
    background: var(--color-primary-light-1);
    color: var(--color-primary-6);
  }

  &:hover {
    background: var(--color-primary-light-1);
    border-color: var(--color-primary-3);

    .action-icon {
      background: var(--color-primary-6);
      color: white;
    }

    .action-title {
      color: var(--color-primary-6);
    }
  }
}

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

强制更新场景

优化前

┌──────────────────────────────────────────────┐
│              [ 立即更新 ]                      │ ← 只有一个按钮
└──────────────────────────────────────────────┘

优化后

┌──────────────────────────────────────────────┐
│                                              │
│ ┌────────────────────────────────────────┐  │
│ │ ↓ 立即更新到最新版本                → │  │ ← 卡片式操作
│ │    点击下载 45.2 MB 安装包            │  │
│ └────────────────────────────────────────┘  │
│                                              │
│ ⚠️ 重要提示                                   │
│ 此版本包含重要的安全更新和问题修复...        │
└──────────────────────────────────────────────┘

改进:

  • 不再是冷冰冰的单个按钮
  • 提供更多上下文信息
  • 更大的点击区域
  • 更友好的引导

响应式设计

大屏幕(> 600px

┌────────────────────────────────────────────┐
│ ✕ 稍后更新                                 │
│    跳过此版本,下次启动时再提醒             │
└────────────────────────────────────────────┘

┌────────────────────────────────────────────┐
│ ↓ 立即更新到最新版本                →     │
│    点击下载 45.2 MB 安装包                │
└────────────────────────────────────────────┘

小屏幕(< 600px

布局保持一致,卡片宽度自适应

可访问性

键盘导航

  • Tab 键切换焦点
  • Enter/Space 键激活
  • 清晰的焦点指示器

屏幕阅读器

  • 语义化的结构
  • 清晰的标签和描述
  • 视觉和文本信息一致

对比度

  • 标题文字对比度 > 4.5:1
  • 描述文字对比度 > 4.5:1
  • 图标与背景对比度 > 3:1

动画效果

1. 悬停上移

transform: translateY(-1px);

目的: 提供视觉反馈,表示可点击

2. 箭头移动

transform: translateX(4px);

目的: 强调进入下一步的操作

3. 图标旋转(安装中)

animation: spin 1s linear infinite;

目的: 表示正在进行中

4. 图标脉冲(准备中)

animation: pulse 1.5s ease-in-out infinite;

目的: 表示等待响应


视觉层次

信息密度

图标40×40→ 标题14px→ 描述12px→ 箭头16px
   ↓                ↓               ↓              ↓
视觉焦点         主要信息      辅助说明      方向指示

颜色层次

主要操作:主题色背景 + 蓝色图标
次要操作:灰色背景 + 灰色图标
安装中:绿色背景 + 绿色图标

用户体验提升

优化前

  • 只显示操作名称
  • 不清楚操作后果
  • 点击区域小
  • 视觉单调

优化后

  • 操作 + 说明文字
  • 清晰的上下文信息
  • 整个卡片可点击
  • 丰富的视觉反馈

数据对比

维度 优化前 优化后
信息量 丰富
点击区域 100×32px 整个卡片
视觉层次 单层 三层(图标/标题/描述)
交互反馈 简单 丰富

实现代码

模板部分

<!-- 操作区域 -->
<div class="action-section">
  <!-- 稍后更新 -->
  <div class="action-item skip-action" @click="handleSkip">
    <div class="action-content">
      <icon-close class="action-icon" />
      <div class="action-text">
        <div class="action-title">稍后更新</div>
        <div class="action-desc">跳过此版本下次启动时再提醒</div>
      </div>
    </div>
  </div>

  <!-- 立即更新 -->
  <div class="action-item primary-action" @click="handleDownload">
    <div class="action-content">
      <icon-download class="action-icon" />
      <div class="action-text">
        <div class="action-title">立即更新到最新版本</div>
        <div class="action-desc">点击下载 {{ formatFileSize(fileSize) }} 安装包</div>
      </div>
      <div class="action-arrow">
        <icon-arrow-right />
      </div>
    </div>
  </div>
</div>

样式部分

见上方"完整样式代码"


总结

核心改进

  1. 信息更丰富 - 标题 + 描述文字
  2. 视觉更现代 - 卡片式设计
  3. 操作更友好 - 大点击区域
  4. 反馈更及时 - 丰富的悬停效果

设计原则

让用户清楚知道每个操作的含义和后果

用户体验

  • 清晰的信息层次
  • 大的点击区域
  • 丰富的视觉反馈
  • 现代的设计风格

操作区域重新设计完成! 🎉