style: 颜色统一为CSS变量并优化复习卡片交互

This commit is contained in:
2026-09-13 22:11:23 +08:00
parent cc4c20e77b
commit fae27e7c20
12 changed files with 372 additions and 100 deletions
+19 -4
View File
@@ -85,12 +85,27 @@ lpt-fe/src/
### 按钮规范
- 页面主操作 / 卡片 CTA`size="large"`,如 Study 开始任务、TaskForm 保存、Welcome 快速入口。
- 区块工具栏 / 页内操作:默认尺寸,如 Review 刷新、ReviewRecall 面板操作、历史记录
- 表格/列表行内操作:`size="small"`,主操作实底 `type="success"`,次操作 `text`;如 Review 卡片中「回忆复习」为主、「查看记录」为次
- 主操作 / 卡片 CTA`size="large"`(实测 40px 高、15px 字),如 Study 开始任务、Welcome 快速入口。
- 区块工具栏 / 页内操作:默认尺寸32px 高、14px 字),如 Review 刷新、ReviewRecall 面板操作。
- 表格/列表行内操作:`size="small"`(28px 高、13px 字;不得再调小)
- 弹窗 footer:默认尺寸;确认按钮 `type="success"`,取消按钮默认;危险操作统一 `type="danger"`
- 正向/保存语义统一 `success`,次级编辑语义可用 `primary`,不要在同一功能上混用。
- 窄屏(`max-width: 768px`)操作区按钮纵向全宽,全局规则位于 `src/assets/main.css``.action-row / .edit-actions / .fragment-edit-actions / .task-actions``.task-actions` 中主操作在上、次操作在下(如 Review 的回忆复习/查看记录)
- 窄屏(`max-width: 768px`)操作区按钮纵向全宽,全局规则位于 `src/assets/main.css``.action-row / .edit-actions / .fragment-edit-actions / .task-actions`
### 颜色与主题
- 禁止在组件内写颜色字面量:新增颜色先加到 `src/assets/base.css``:root`,组件只用 `var(--x)`。语义色已提供 `--accent-warning / --accent-warning-soft / --accent-warning-strong / --accent-success-soft / --accent-success-softer / --accent-success-strong / --accent-success-text`
- Element Plus 主题色在 `src/assets/main.css``:root` 覆盖(`--el-color-success` / `--el-color-primary` 指向 `--green-700`),全站按钮/标签/开关自动生效,不要在组件里逐个覆盖 EP 组件色。
- `src/main.ts` 中自定义样式必须写在 `import 'element-plus/dist/index.css'` **之后**,否则主题覆盖会被 EP 覆盖。
- 实底主色统一用满足 WCAG AA(白字对比度 ≥4.5:1)的 `--green-700``--green-600` 仅用于文字/链接。
- 颜色字面量不得出现在 JS/模板表达式里(如 `:color="'#xxx'"` 引 CSS 变量会失效),需要动态色时保留字面量或改用 CSS 类。
### 卡片列表交互
- 卡片列表的卡片整体可点击进入详情:外层加 `role="link" tabindex="0"``aria-label`,并绑定 `@click``@keydown.enter/@keydown.space.prevent`
- 卡片内的附加按钮必须 `@click.stop`,避免被卡片点击吞掉(如 Review 的「回忆复习」)。
- 卡片操作使用右对齐操作簇(`justify-content: flex-end`),**禁止用 `space-between` 把两个按钮拉到卡片两端**。
- 加载失败必须区分于空数据:保留一个 `loadFailed` 状态,失败时给出可读提示 + 重试按钮,重试前先重置该状态;不要只靠 `finally` 关 loading 导致空白页。
### 移动端适配