docs: 添加 ScriptView 移动端优化设计文档

设计方案:
- 参数区域改为并排两列布局
- 字体尺寸全面调小匹配原型图
- 间距紧凑化优化
- 移动端小屏幕适配策略

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 19:29:35 +08:00
parent fb5f3089e2
commit d36574440b
@@ -0,0 +1,177 @@
# ScriptView 移动端优化设计
## 概述
优化剧本生成器页面(ScriptView.vue),使其与原型图保持一致,同时确保移动端屏幕适配。
## 问题分析
### 1. 布局差异
| 区域 | 原型图 | 当前实现 | 差异 |
|------|--------|----------|------|
| 参数区域 | grid-cols-2 并排 | 上下堆叠 | 布局结构不同 |
| NPC 容器 | p-4 (16rpx) | p-6 (24rpx) | padding 过大 |
| 主容器 | rounded-[2rem] | rounded-2xl/3xl | 圆角偏小 |
### 2. 字体尺寸过大
| 元素 | 原型图 | 当前 | 建议调整 |
|------|--------|------|----------|
| label | 10px (~18rpx) | 16rpx | → 17rpx |
| input | 11px (~20rpx) | 22rpx | → 19rpx |
| npc-input | 10px (~18rpx) | 20rpx | → 18rpx |
| param-option | 10px (~18rpx) | 18rpx | 保持 |
| param-label | 9px (~16rpx) | 16rpx | 保持 |
### 3. 间距问题
| 元素 | 原型图 | 当前 | 建议调整 |
|------|--------|------|----------|
| 主容器 padding | p-6 (24rpx) | 32rpx | → 24rpx |
| NPC 容器 padding | p-4 (16rpx) | 24rpx | → 16rpx |
| 卡片间距 | space-y-6 (24rpx) | 24rpx | 保持 |
| 参数选项 gap | gap-1.5 (6rpx) | 8rpx | → 6rpx |
## 设计方案
### 1. 参数区域布局重构
**当前结构:**
```vue
<view class="params-section">
<view class="param-row">
<text class="param-label">叙事风格</text>
<view class="param-options">...</view>
</view>
</view>
<view class="params-section">
<view class="param-row">
<text class="param-label">故事篇幅</text>
<view class="param-options">...</view>
</view>
</view>
```
**新结构(并排):**
```vue
<view class="params-container">
<view class="param-group">
<text class="param-label">叙事风格</text>
<view class="param-options">...</view>
</view>
<view class="param-group">
<text class="param-label">故事篇幅</text>
<view class="param-options">...</view>
</view>
</view>
```
**CSS**
```css
.params-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16rpx;
margin-bottom: 24rpx;
}
.param-group {
display: flex;
flex-direction: column;
gap: 8rpx;
min-width: 0; /* 防止内容溢出 */
}
.param-options {
display: flex;
flex-wrap: wrap;
gap: 6rpx;
}
.param-option {
padding: 6rpx 12rpx;
font-size: 17rpx;
white-space: nowrap; /* 防止文字换行 */
}
```
### 2. 移动端适配策略
**小屏幕适配(<375px 宽度):**
- 参数区域保持并排,但减小 option 的 padding
- 使用 `min-width: 0``overflow: hidden` 防止溢出
- NPC 表单三列改为两列(极小屏幕)
**媒体查询模拟(rpx 已自动适配):**
```css
/* 默认并排布局 */
.params-container {
grid-template-columns: 1fr 1fr;
}
/* 超小屏幕堆叠 */
@media (max-width: 320px) {
.params-container {
grid-template-columns: 1fr;
}
.npc-form {
grid-template-columns: 1fr 1fr;
}
}
```
### 3. 尺寸优化表
| 元素 | 原尺寸 | 新尺寸 | 说明 |
|------|--------|--------|------|
| `.glass-card-main` padding | 32rpx | 24rpx | 匹配原型 p-6 |
| `.glass-card-main` border-radius | 48rpx | 56rpx | 接近 2rem |
| `.glass-input` height | 72rpx | 68rpx | 更紧凑 |
| `.glass-input` font-size | 22rpx | 19rpx | 匹配原型 11px |
| `.label` font-size | 16rpx | 17rpx | 匹配原型 10px |
| `.npc-container` padding | 24rpx | 16rpx | 匹配原型 p-4 |
| `.npc-input` height | 64rpx | 60rpx | 更紧凑 |
| `.npc-input` font-size | 20rpx | 18rpx | 匹配原型 10px |
| `.param-option` padding | 8rpx 16rpx | 6rpx 12rpx | 匹配原型 |
| `.param-option` font-size | 18rpx | 17rpx | 更精致 |
| `.param-options` gap | 8rpx | 6rpx | 更紧凑 |
### 4. 输入框溢出预防
```css
.glass-input, .glass-picker {
width: 100%;
max-width: 100%; /* 防止超出父容器 */
box-sizing: border-box; /* 包含 padding 和 border */
padding: 0 16rpx; /* 减小侧边 padding */
}
.npc-form {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 10rpx; /* 减小 gap */
}
.npc-input, .npc-picker {
min-width: 0; /* 允许缩小 */
}
```
## 修改文件
- `mini-program/src/pages/main/ScriptView.vue`
## 验收标准
- [ ] 参数区域(叙事风格、故事篇幅)左右并排显示
- [ ] 所有输入框在 iPhone SE(320px 宽度)下不溢出
- [ ] 字体尺寸视觉上更接近原型图的精致感
- [ ] NPC 容器 padding 紧凑,不浪费空间
- [ ] 主容器圆角接近原型图的 rounded-[2rem]
- [ ] 整体布局紧凑,与原型图视觉一致
## 移动端适配测试设备
- iPhone SE (320px × 568px)
- iPhone 12 mini (375px × 812px)
- iPhone 12/13/14 (390px × 844px)
- iPhone Plus/Max (428px × 926px)