# 按钮样式设计规范
本文档定义了项目中按钮组件的样式规范,确保整个应用的按钮样式统一、协调、美观。
## 一、尺寸
**所有按钮统一使用默认尺寸**,不需要设置 `size` 属性。
- 高度:32px(Element Plus默认)
- 适用于所有场景:页面操作区域、表格操作列、对话框底部等
```vue
新 增
编辑
```
## 二、颜色
| 操作类型 | type | plain | 颜色 | 使用场景 |
|---------|------|-------|------|---------|
| 主要操作 | `primary` | - | 蓝色实心 | 新增、保存、提交 |
| 查询 | `primary` | - | 蓝色实心 | 查询 |
| 重置 | - | - | 灰色 | 重置 |
| 导出操作 | `warning` | ✓ | 橙色边框 | 导出、下载 |
| 导入操作 | `primary` | ✓ | 蓝色边框 | 导入、上传 |
| 设置操作 | `primary` | ✓ | 蓝色边框 | 设置、配置 |
| 同步操作 | `primary` | ✓ | 蓝色边框 | 同步、连接 |
| 状态锁定 | - | - | 灰色 | 状态锁定、解锁 |
| 危险操作 | `danger` | - | 红色实心 | 删除、清空 |
## 三、样式
### 1. 实心按钮(默认)
- **使用场景**:新增、保存、删除等主要操作
- **代码**:`type="primary"` 或 `type="danger"`
```vue
新 增
删 除
```
### 2. Plain按钮(边框样式)
- **使用场景**:重置、导出、导入、设置、同步等次要操作
- **代码**:`type="primary" plain` 或 `type="warning" plain`
```vue
重置
导出
导入
设置
同步
```
### 3. 设置按钮
- **使用场景**:设置、配置等操作
- **代码**:`type="primary" plain`
```vue
设置
```
### 4. 同步按钮
- **使用场景**:同步、连接等操作
- **代码**:`type="primary" plain`
```vue
同步
```
### 5. 默认按钮(灰色)
- **使用场景**:状态锁定、解锁等中性操作
- **代码**:不设置 `type` 属性
```vue
状态锁定
```
### 6. 表格操作列按钮(link)
- **使用场景**:表格操作列,使用 `link` 属性
- **代码**:`link` 属性,配合 `type` 使用
- **说明**:表格内的操作按钮统一使用 `link` 样式,节省空间
```vue
编辑
删除
通过
批量删除
```
## 四、图标
所有按钮应配合相应的图标使用,提升用户体验和视觉识别度。
### 常用图标映射
| 操作类型 | 图标名称 |
|---------|---------|
| 查询 | `Search` |
| 重置 | `Refresh` |
| 新增/添加 | `FolderAdd` |
| 导出/下载 | `Download` |
| 导入/上传 | `UploadFilled` |
| 编辑/修改 | `EditPen` |
| 删除 | `Delete` |
| 批量删除 | `DocumentDelete` |
| 通过 | `CircleCheck` |
| 驳回 | `CircleClose` |
| 查看图片 | `Picture` |
| 详情/其他 | `Document` |
| 设置/配置 | `Setting` |
| 锁定/解锁 | `Lock` |
| 用户相关 | `User` |
| 调动/转换 | `Switch` |
| 同步/连接 | `Connection` |
### 使用示例
```vue
新 增
查询
重置
导出
导入
同步
```
## 五、间距
按钮之间使用 `class="ml10"` 保持10px的左边距,确保按钮组视觉统一。
```vue
新 增
查询
重置
导出
导入
同步
```
## 六、完整示例
### 页面操作按钮组
```vue
新 增
查询
重置
导出
导入
设置
同步
```
### 表格操作列
```vue
编辑
删除
```
## 七、快速参考
| 要素 | 规范 |
|------|------|
| **尺寸** | 统一使用默认尺寸,不设置 `size` 属性 |
| **颜色** | 主要操作用蓝色实心,次要操作用蓝色/橙色边框,危险操作用红色 |
| **样式** | 主要操作用实心,次要操作用 `plain`,**表格操作列必须用 `link`** |
| **图标** | 所有按钮必须配合图标,使用 PascalCase 格式 |
| **间距** | 按钮之间使用 `class="ml10"` 保持10px间距 |
---
**维护者:** 前端开发团队
**最后更新:** 2024年