# 前端样式 / 布局 / UI 修改操作指南 > 面向二次开发前端,告诉你:**改样式 / 改布局 / 改 UI 具体要动哪些文件、怎么改**。 > > 项目技术栈:Vite + Vue 3 + TypeScript + Ant Design Vue + Pinia + Vue Router + SCSS --- ## 🧭 速查表 - **改全局颜色 / 按钮 / 弹窗风格**:看第 1 章「整体样式体系总览」(`src/styles/index.scss` + `src/styles/variables.scss`) - **改管理端整体布局(侧边栏、头部、内容区排版)**:看 2.1「管理端整体布局」(`src/views/admin_page/index.vue`) - **改用户端整体布局(顶部导航 + 内容容器)」**:看 2.2「用户端整体布局」(`src/views/user_pages/index.vue`) - **改 YOLO 检测排版 / 三种布局 / 卡片样式**:看第 3 章「YOLO 检测页面修改指南」(`src/views/user_pages/YoloDetection.vue`) - **改 AI 助手聊天布局**:看第 4 章「修改 AI 助手页面」(`src/views/user_pages/AiChat.vue`) --- ## 1. 整体样式体系总览 ### 1.1 全局样式入口 - 入口文件:`src/styles/index.scss` - 在 `src/main.ts` 中全局引入: - `import './styles/index.scss'` - 主要职责: - 重置 margin / padding / box-sizing - 全局字体、`html, body, #app` 基础样式 - 自定义 `.btn` / `.card` 等通用类 - 全局 Ant Design Vue 主题风格覆盖(如 `.ant-modal`, `.ant-btn` 等) **如果你要改全局的按钮、弹窗、表单、输入框等基础风格:** 1. 打开 `src/styles/index.scss` 2. 找对应的选择器: - 按钮:`.ant-btn` 下的几种状态(`&.ant-btn-default` / `&.ant-btn-primary` / `&.ant-btn-dangerous` 等) - 弹窗:`.ant-modal` 内的 `.ant-modal-content` / `.ant-modal-header` / `.ant-modal-footer` - 输入/选择等:`.ant-input`, `.ant-select-selector`, `.ant-input-number`, `.ant-picker` 等 3. 直接在这里调整颜色、圆角、阴影、间距。 4. 样式会作用于所有页面,无需在每个 `.vue` 里重复写。 > 建议:全局 Design System 统一改在这里,不要在业务页面里到处改 AntD 默认样式。 ### 1.2 变量和混合(主题基础) - 文件:`src/styles/variables.scss` - 主要内容: - 颜色:`$primary-color`、`$success-color`、`$gray-xxx` 等 - 间距:`$spacing-1 ~ $spacing-20` - 圆角:`$radius-md`、`$radius-lg` 等 - 阴影:`$shadow-sm` / `$shadow-md` / `$shadow-lg` - 常用 mixin:`@mixin card-style`、`@mixin button-style` 等 **改全局配色 / 圆角 / 阴影的操作方式:** 1. 打开 `src/styles/variables.scss` 2. 修改对应变量: - 主色:`$primary-color` / `$primary-light` / `$primary-dark` - 背景:`$bg-primary` / `$bg-secondary` - 阴影:`$shadow-md` / `$shadow-lg` 3. 不需要修改业务页面,使用这些变量的地方会统一生效。 > 如果要在页面里复用统一卡片/按钮样式,可以直接: > > ```scss > .my-card { > @include card-style; > } > > .my-primary-button { > @include button-style($primary-color, #fff); > } > ``` ### 1.3 主题 store 与 CSS 变量 - 文件:`src/stores/hertz_theme.ts` - 作用: - 定义 `ThemeConfig`(导航栏背景、页面背景、卡片背景、主色、文字颜色) - 使用 `document.documentElement.style.setProperty` 写入 CSS 变量: - `--theme-header-bg`, `--theme-page-bg`, `--theme-card-bg`, `--theme-primary`, `--theme-text-primary` 等 - 使用方式: - 在页面/组件的 SCSS 中,通过 `var(--theme-primary)` 等变量引用主题色: - 示例:`color: var(--theme-text-primary, #1e293b);` **修改主题默认值**: 1. 打开 `src/stores/hertz_theme.ts` 2. 修改 `defaultTheme` 对象里的颜色值即可: - 如:`primaryColor: '#FF4D4F'` 改成你的品牌色 3. 调用 `themeStore.loadTheme()` 时会自动应用到全局。 **页面内如何用这些主题变量?** - 在 SCSS 中使用: ```scss .some-block { background: var(--theme-card-bg, #fff); color: var(--theme-text-primary, #1e293b); border-color: var(--theme-card-border, #e5e7eb); } ``` --- ## 2. 布局结构:管理端 / 用户端 ### 2.1 管理端整体布局 - 入口布局:`src/views/admin_page/index.vue` - 结构: - 外层 `.admin-layout` - 使用 `a-layout` + `a-layout-sider` + `a-layout-header` + `a-layout-content` + `a-layout-footer` - 侧边菜单:`a-layout-sider` 内的 `a-menu`,使用 `admin_menu.ts` 生成菜单项 **修改管理端整体布局方式(比如侧边栏宽度、顶部高度):** 1. 打开 `src/views/admin_page/index.vue` 2. 找到模板部分: - 侧边栏:`` - 顶部:`` - 内容:`` 3. 在同文件底部的 `