# 剧本生成器页面间距优化设计文档

> **设计目标**: 解决"创造未来"页面过于紧凑的问题，视觉还原度从 65% 提升至 90%+

---

## 1. 问题诊断

### 1.1 当前页面紧凑问题

| 元素 | 当前值 | 原型标准 | 差距 |
|------|--------|---------|------|
| 卡片 padding | 20rpx | 32rpx | -37.5% |
| 输入框高度 | 64rpx | 88rpx | -27.3% |
| 网格 gap | 10rpx | 24rpx | -58.3% |
| 输入框圆角 | 20rpx | 32rpx | -37.5% |
| 标签字体 | 17rpx | 20rpx | -15% |
| 输入框字体 | 18rpx | 28rpx | -35.7% |
| 卡片圆角 | 28rpx | 40rpx | -30% |
| section 间距 | 20rpx | 32rpx | -37.5% |

### 1.2 视觉影响

- 输入框高度不足，点击区域小，交互体验差
- 字体过小，可读性不佳
- 间距过紧，视觉压力大，缺乏呼吸感
- NPC 表单 3 列布局在小屏幕上过于拥挤

---

## 2. 设计方案

### 2.1 整体策略

采用**方案 C - 完全还原原型**，所有样式值对齐原型标准（`mini-program-prototype/components.js` 中的 `ScriptGenerator` 组件）。

### 2.2 具体调整

#### 2.2.1 卡片容器

```css
/* 当前 → 目标 */
.section-card {
- padding: 20rpx;
+ padding: 32rpx;
- border-radius: 28rpx;
+ border-radius: 40rpx;
  margin-bottom: 32rpx; /* 新增 */
}
```

#### 2.2.2 输入框样式

```css
/* 当前 → 目标 */
.glass-input, .glass-picker {
- height: 64rpx;
+ height: 88rpx;
- border-radius: 20rpx;
+ border-radius: 32rpx;
- padding: 0 16rpx;
+ padding: 0 24rpx;
- font-size: 18rpx;
+ font-size: 28rpx;
}
```

#### 2.2.3 网格布局

```css
/* 当前 → 目标 */
.profile-grid {
- gap: 10rpx;
+ gap: 24rpx;
}

.npc-form {
- grid-template-columns: 1fr 1fr 1fr;
+ grid-template-columns: 1fr 1fr; /* 2 列布局 */
  gap: 16rpx; /* 新增 */
}
```

#### 2.2.4 标签和字体

```css
/* 当前 → 目标 */
.label, .section-title {
- font-size: 17rpx;
+ font-size: 20rpx;
  letter-spacing: 3rpx;
}

.section-hint {
- font-size: 13rpx;
+ font-size: 15rpx;
}
```

#### 2.2.5 NPC 描述区域

```css
/* 当前 → 目标 */
.glass-textarea {
- height: 88rpx;
+ height: 120rpx;
- font-size: 17rpx;
+ font-size: 24rpx;
  padding: 20rpx; /* 新增 */
}
```

#### 2.2.6 参数选择区域

```css
/* 当前 → 目标 */
.param-option {
- padding: 6rpx 12rpx;
+ padding: 12rpx 20rpx;
- font-size: 17rpx;
+ font-size: 20rpx;
  border-radius: 20rpx; /* 新增 */
}

.params-container {
  gap: 24rpx; /* 新增 */
}
```

#### 2.2.7 生成按钮

```css
/* 当前 → 目标 */
.generate-btn {
- height: 80rpx;
+ height: 96rpx;
- border-radius: 28rpx;
+ border-radius: 40rpx;
  margin-top: 24rpx; /* 新增 */
}
```

#### 2.2.8 剧本卡片

```css
/* 当前 → 目标 */
.script-card {
- padding: 20rpx;
+ padding: 32rpx;
- border-radius: 28rpx;
+ border-radius: 40rpx;
  margin-top: 24rpx;
}

.script-title {
- font-size: 26rpx;
+ font-size: 32rpx;
}

.script-summary {
- font-size: 20rpx;
+ font-size: 24rpx;
}
```

### 2.3 NPC 表单 2 列布局实现

```vue
<!-- 模板结构 -->
<view class="npc-form">
  <input placeholder="姓名" v-model="npcConfig.name" />
  <picker placeholder="角色">...</picker>
  <picker placeholder="关系">...</picker>
  <textarea placeholder="描述" v-model="npcConfig.desc" rows="2" />
</view>

<!-- 样式 -->
<style scoped>
.npc-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16rpx;
}
/* textarea 跨越两列 */
.npc-form textarea {
  grid-column: 1 / -1;
}
</style>
```

---

## 3. 修改文件清单

| 文件 | 修改内容 |
|------|---------|
| `mini-program/src/pages/main/ScriptView.vue` | 所有样式调整 |

---

## 4. 预期效果

### 4.1 视觉还原度

- **当前**: ~65%
- **目标**: 90%+

### 4.2 具体改善

- ✅ 输入框高度增加 37.5%，点击区域更大
- ✅ 字体大小增加 55.6%，可读性提升
- ✅ 卡片间距增加 60%，视觉呼吸感增强
- ✅ NPC 表单从 3 列改为 2 列，布局更清晰
- ✅ 圆角统一至原型标准，视觉一致性提升

### 4.3 验收标准

在微信开发者工具中验证：
1. 页面无报错，所有元素正常渲染
2. 输入框高度 ≥ 88rpx
3. 卡片圆角 ≥ 40rpx
4. NPC 表单为 2 列布局
5. 字体大小符合原型标准
6. 移动端适配正常，无溢出或重叠

---

## 5. 风险提示

1. **低端设备性能**: 增加间距可能导致页面总高度增加，需确保滚动流畅
2. **小屏幕适配**: 2 列布局在超窄屏幕（<320px）可能需要单列回退
3. **回归风险**: 样式调整后需验证所有交互状态正常

---

## 6. 参考资料

- 原型组件：`mini-program-prototype/components.js` - ScriptGenerator (lines 138-256)
- 实施计划：`docs/superpowers/plans/2026-03-15-mini-program-prototype-restoration.md`
- 视觉对比：`mini-program-prototype/script-view-spacing-compare.html`

---

**设计确认**: 用户已批准方案 C（完全还原原型）+ NPC 表单 2 列布局
