--- name: ink-training-theme description: Apply ink-minimal style to student training pages (Vue 3 + Element Plus). Use when restyling student pages, sidebar el-menu, step tabs, buttons, tables, or type scale in this repo. Do not use for admin pages or business-logic changes. --- # 墨黑极简 · 学生实训页设计规范 本技能用于把学生端实训页(`.student-training-shell` 体系)统一为当前已在 `src/views/foundation/new-product-survey.vue` 落地的「墨黑极简」风格:纯白画布、 墨黑主操作、中性灰层次、紧凑排版。该 Vue 文件是整体标准样例;**步骤导航** 以本规范「步骤导航:按钮切换风」一节为准(foundation 三页均已落地), **左侧课程菜单**换肤见「侧边栏 el-menu 墨黑换肤」与「折叠把手」两节。 拿不准时先读这些文件。 ## 边界 - 只动 template 结构与样式;script 业务逻辑(判题/保存/草稿/上传/接口)一律不碰。 - 仅作用于当前页根类,不得影响其他页面;**但必须同步修改全局 `src/assets/styles/student-training.scss`**(见下一节「全局 !important 覆盖 机制」),否则页面样式会被带 `!important` 的旧蓝色规则碾压。 - 表格类内容区不铺任何底色,对错只靠文字反馈,不靠行背景。 ## 选择器边界(防污染教师端/超管端) ### 必须遵守的规则 **改全局 `student-training.scss` 时,所有视觉样式选择器必须以以下锚点开头 之一——否则会漏到教师端或超管端的普通页面:** | 安全锚点 | 覆盖范围 | |----------|----------| | `.student-training-shell` | **实训页面专用容器类**(学生端 + 教师端预览共用,是实训风格) | | `#app .studentLayout .app-main:has(.xxx-page)` | 精确限定在学生端某个路由页面 | | `#app .teacherLayout .app-main:has(.student-training-shell)` | 限定在教师端预览实训页面(如需差异化) | **危险锚点(绝对不能用)**: | 危险选择器 | 后果 | |------------|------| | `.el-button { ... }` | 污染全站所有 Element Plus 按钮(教师端/超管端/学生端都会被改) | | `.btn-primary { ... }` | 同上 | | `.task-actions { ... }` (裸写,不带前置锚) | 教师端/超管端如果也有 `.task-actions` 类就会被改 | | `button.outline-action { ... }` (裸写) | 全站所有 outline-action 按钮被改 | | `:root { --xxx: ... }` (视觉令牌) | CSS 自定义属性会全局继承,但字体/字号/间距这类无害 | **项目实际验证**: - 教师端 `views/teacher/**/*.vue` 和超管端 `views/admin/**/*.vue` 均不直接使用 `.student-training-shell` 类 - 教师端预览学生实训页面时,才会通过布局嵌套间接使用 - **超管端完全不涉及实训模块**,所以以 `.student-training-shell` 为锚点最安全 ### 页面非 scoped 块的边界 每个页面自己写的非 scoped `