feat: 优化

This commit is contained in:
2026-03-16 00:47:26 +08:00
parent 6d891b855e
commit c2eda4d1e8
2 changed files with 205 additions and 1 deletions

View File

@@ -19,11 +19,15 @@ description: Vue 3 项目从 Ant Design Vue 迁移到 shadcn-vue 的专业技能
### 抵制过时设计
**拒绝老气 UI**
- ❌ 粗重边框、多重边框嵌套
- ❌ 粗重边框、多重边框嵌套(边框重叠)
- ❌ 灰暗沉闷的配色
- ❌ 过度装饰的渐变和阴影
- ❌ 拥挤无呼吸感的布局
- ❌ 间距混乱、缺乏层级
-**老旧 Tabs 设计**(下方粗线、方块按钮感)
-**Element UI 风格组件**el-tabs、el-form 等)
-**密集表单**label 左对齐、无间距)
-**重阴影卡片**shadow-lg 以上)
**拥抱现代设计**
- ✅ 轻量边框或无边框设计
@@ -31,6 +35,20 @@ description: Vue 3 项目从 Ant Design Vue 迁移到 shadcn-vue 的专业技能
- ✅ 克制的阴影shadow-sm 为主)
- ✅ 充足留白,呼吸感
- ✅ 清晰的视觉层级8px 间距递进)
-**现代 Tabs**胶囊式、underline 轻量)
-**宽松表单**label 上方、垂直布局)
### 老旧组件识别与替换
| 老旧模式 | 现代替代 |
|---------|---------|
| `a-tabs` / `el-tabs` 底部粗线 | shadcn `Tabs` 胶囊式 |
| `a-segmented` | 自定义 pill 按钮 |
| 密集 `a-form` | 宽松 `Form` 垂直布局 |
| `a-card` 重阴影 | `Card` 无边框或轻边框 |
| `a-descriptions` | 自定义 grid 布局 |
| `a-breadcrumb` | shadcn `Breadcrumb` |
| `a-pagination` | shadcn `Pagination` |
### 颜色设计原则

View File

@@ -482,3 +482,189 @@ Tailwind 使用 4px 基准:
</div>
</template>
```
---
## 老旧组件识别与现代化
### 老旧 Tabs 设计
**❌ 拒绝的老旧模式**
- 底部粗线指示器2-3px 实线)
- 方块按钮感,无圆角
- 灰色背景分割条
- 拥挤的标签间距
**✅ 现代替代方案**
```vue
<!-- 老旧: a-tabs / el-tabs -->
<a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="1" tab="标签一" />
<a-tab-pane key="2" tab="标签二" />
</a-tabs>
<!-- 现代: shadcn Tabs -->
<Tabs v-model="activeKey" class="w-full">
<TabsList class="bg-muted/50 p-1 rounded-lg">
<TabsTrigger value="1" class="rounded-md data-[state=active]:bg-background">
标签一
</TabsTrigger>
<TabsTrigger value="2" class="rounded-md data-[state=active]:bg-background">
标签二
</TabsTrigger>
</TabsList>
<TabsContent value="1">内容一</TabsContent>
<TabsContent value="2">内容二</TabsContent>
</Tabs>
```
### 老旧表单设计
**❌ 拒绝的老旧模式**
- Label 左对齐,密集排列
- 表单项间距过小(<16px
- 边框重叠,视觉混乱
- 灰暗的禁用状态
**✅ 现代替代方案**
```vue
<!-- 现代表单: 垂直布局宽松间距 -->
<form class="space-y-6">
<div class="space-y-2">
<Label class="text-sm font-medium">用户名</Label>
<Input class="h-10" placeholder="请输入" />
<p class="text-xs text-muted-foreground">提示信息</p>
</div>
<div class="space-y-2">
<Label>密码</Label>
<Input type="password" class="h-10" />
</div>
<div class="flex gap-3 pt-4">
<Button variant="outline">取消</Button>
<Button>提交</Button>
</div>
</form>
```
### 老旧卡片设计
**❌ 拒绝的老旧模式**
- 重阴影shadow-lg 以上)
- 多重边框嵌套
- 灰暗的头部背景
- 拥挤的内边距
**✅ 现代替代方案**
```vue
<!-- 现代卡片: 轻量呼吸感 -->
<div class="rounded-xl border bg-card p-6">
<div class="flex items-center justify-between pb-4 border-b">
<h3 class="text-lg font-semibold">标题</h3>
<Button variant="ghost" size="sm">操作</Button>
</div>
<div class="pt-4 space-y-4">
<!-- 内容 -->
</div>
</div>
<!-- 或使用无边框设计 -->
<div class="bg-muted/30 rounded-xl p-6">
<!-- 内容 -->
</div>
```
### 老旧按钮设计
**❌ 拒绝的老旧模式**
- 方角按钮
- 过重的渐变背景
- 灰暗的 hover 状态
**✅ 现代替代方案**
```vue
<!-- 现代按钮: 圆角轻盈 -->
<div class="flex gap-2">
<Button variant="default" class="rounded-lg">主要</Button>
<Button variant="secondary" class="rounded-lg">次要</Button>
<Button variant="outline" class="rounded-lg">描边</Button>
<Button variant="ghost" class="rounded-lg">幽灵</Button>
<Button variant="destructive" class="rounded-lg">危险</Button>
</div>
```
### 老旧表格设计
**❌ 拒绝的老旧模式**
- 斑马纹背景(过时)
- 粗重的边框线
- 拥挤的单元格
- 灰色的表头背景
**✅ 现代替代方案**
```vue
<!-- 现代表格: 简洁留白 -->
<Table>
<TableHeader>
<TableRow class="hover:bg-transparent border-b">
<TableHead class="h-12 font-medium">列名</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow class="hover:bg-muted/50">
<TableCell class="py-4">内容</TableCell>
</TableRow>
</TableBody>
</Table>
```
### 边框重叠问题
**识别边框重叠**
- 多个卡片紧挨边框叠加成2px
- 表格单元格边框重叠
- 嵌套容器边框累积
**解决方案**
```vue
<!-- 边框重叠 -->
<div class="border p-4">
<div class="border p-4"> <!-- 边框叠加 -->
内容
</div>
</div>
<!-- 避免重叠 -->
<div class="border-b pb-4">
<div class="pt-4"> <!-- padding 分隔 -->
内容
</div>
</div>
<!-- 或使用负边距 -->
<div class="border rounded-lg -space-y-px">
<div class="p-4 border-b last:border-b-0">项目1</div>
<div class="p-4 border-b last:border-b-0">项目2</div>
</div>
```
---
## 设计审查清单
迁移时检查以下问题:
- [ ] Tabs 是否使用现代胶囊式设计?
- [ ] 表单是否有足够间距space-y-6
- [ ] 卡片阴影是否克制shadow-sm
- [ ] 边框是否避免重叠?
- [ ] 颜色是否有活力(非灰暗)?
- [ ] 按钮是否有圆角rounded-lg
- [ ] 表格是否简洁无斑马纹?
- [ ] 整体是否有呼吸感?