diff --git a/apps/web/src/pages/health/articleEditor/ArticlePhonePreview.tsx b/apps/web/src/pages/health/articleEditor/ArticlePhonePreview.tsx
index c85c79c..f8f2c67 100644
--- a/apps/web/src/pages/health/articleEditor/ArticlePhonePreview.tsx
+++ b/apps/web/src/pages/health/articleEditor/ArticlePhonePreview.tsx
@@ -10,18 +10,10 @@ interface ArticlePhonePreviewProps {
}
/**
- * iPhone 17 Pro Max 高保真仿真预览
+ * 文章内容在小程序端的实时渲染预览
*
- * 屏幕宽度 375px(接近 iPhone CSS 逻辑像素 430pt 的 87%),
- * 内容区文字大小和间距与小程序 article/detail 完全一致,
- * 保证预览效果 = 实际手机阅读效果。
- *
- * iPhone 17 Pro Max 参数:
- * 物理尺寸 163.4mm × 78.0mm (aspect 2.095)
- * 铝合金一体化机身 (7000-series aerospace aluminum)
- * 横向相机条 — 3 镜头
- * Dynamic Island: 药丸形
- * Home Indicator: 底部圆角横条
+ * 375px 宽度匹配 iPhone CSS 逻辑像素,CSS 与小程序 article/detail 完全一致。
+ * 去掉手机外壳装饰,聚焦内容排版效果验证。
*/
export default function ArticlePhonePreview({
title,
@@ -45,413 +37,218 @@ export default function ArticlePhonePreview({
const today = useMemo(() => new Date().toLocaleDateString('zh-CN'), []);
- // ── iPhone 17 Pro Max 缩放参数 ──
- // 屏幕 375px 宽 → 接近真机 CSS 像素,内容可读性保证
- const BEZEL = 4;
- const PHONE_W = 375;
- const PHONE_R = 58;
- const SCREEN_R = PHONE_R - BEZEL; // 54
-
- // Dynamic Island
- const ISLAND_W = 120;
- const ISLAND_H = 32;
- const ISLAND_R = 16;
- const ISLAND_TOP = 14;
-
- // 前置摄像头
- const CAM_SIZE = 10;
- const CAM_RIGHT = 22;
- const SENSOR_SIZE = 4;
- const SENSOR_LEFT = 22;
-
- // 状态栏
- const STATUS_H = 56;
-
- // Home Indicator
- const HOME_W = 120;
- const HOME_H = 4;
- const HOME_BOTTOM = 10;
-
- // 侧边按钮
- const BTN_OUT = 3;
-
- // 铝合金
- const AL_BODY = '#B0B2B8';
- const AL_DARK = '#9A9CA2';
- const AL_LIGHT = '#C4C6CC';
-
- // 外框总宽度(手机 + 左右 padding)
- const OUTER_W = PHONE_W + BEZEL * 2 + 32; // ~415
-
return (
+ {/* 顶部标签 */}
- 实时预览 · iPhone 17 Pro Max
+
+ 小程序端效果预览 · 375px
- {/* ══════ iPhone 17 Pro Max 外壳 ══════ */}
+ {/* 内容区域 — 自然流动高度,内部可滚动 */}
- {/* ── 侧边按钮 ── */}
-
-
-
-
+
- {/* ── 屏幕容器 ── */}
-
- {/* ── Dynamic Island ── */}
-
-
- {/* ── 状态栏 ── */}
-
-
9:41
-
-
-
-
-
-
-
- {/* ── 内容区域 — 与小程序 article/detail 完全一致的样式 ── */}
-
-
-
-
-
- {coverImage && (
-

{
- (e.target as HTMLImageElement).style.display = 'none';
- }}
- />
- )}
-
- {title || '文章标题'}
-
-
- {category && (
- {category}
- )}
- 健康管理中心
- {today}
-
-
-
- {summary && (
-
+
+
+ {coverImage && (
+

{
+ (e.target as HTMLImageElement).style.display = 'none';
+ }}
+ />
+ )}
+
+ {title || '文章标题'}
+
+
+ {category && (
+
{category}
)}
-
-
- {content && content !== '
' ? (
-
- ) : (
-
- 在左侧编辑器中输入内容
-
- 此处将实时显示预览效果
-
- )}
-
+
健康管理中心
+
{today}
- {/* ── Home Indicator ── */}
-
-
+ {summary && (
+
+ )}
- {/* ── 背面横向相机条 ── */}
-
-
-
-
-
+
+ {content && content !== '
' ? (
+
+ ) : (
+
+ 在左侧编辑器中输入内容
+
+ 此处将实时显示预览效果
+
+ )}
+
diff --git a/docs/discussions/2026-05-11-article-phone-preview-brainstorm.md b/docs/discussions/2026-05-11-article-phone-preview-brainstorm.md
new file mode 100644
index 0000000..dce6dbe
--- /dev/null
+++ b/docs/discussions/2026-05-11-article-phone-preview-brainstorm.md
@@ -0,0 +1,31 @@
+# 文章编辑器手机预览方案头脑风暴
+
+> 日期: 2026-05-11 | 参与者: 用户 + Claude
+
+## 背景
+
+文章编辑器右栏的手机预览(iPhone 17 Pro Max 仿真)效果差:
+1. 手机外壳占据大量像素,内容区被压缩
+2. 手机高度不可控,内容多了无限拉长
+3. styled-block 模板在窄屏下渲染错乱
+4. 用户目标是看「小程序上文章长什么样」,不是看一台手机
+
+## 5 个候选方案
+
+| 方案 | 用户体验 | 实现复杂度 | 维护成本 | 推荐度 |
+|------|---------|-----------|---------|--------|
+| A: 去壳化纯内容预览 | 内容完整可读 | 极低(删代码) | 最低 | ⭐⭐⭐⭐⭐ |
+| B: 等比缩放 scale | 比例正确但文字小 | 中等 | 中高 | ⭐⭐ |
+| C: iframe 独立页面 | 理论最接近实际 | 高 | 高 | ⭐ |
+| D: 迷你手机+点击放大 | 工作流被割裂 | 中高 | 高 | ⭐⭐ |
+| E: 标签切换多设备 | 当前无桌面端需求 | 低 | 低 | ⭐⭐⭐(渐进扩展) |
+
+## 结论
+
+**推荐方案 A(去壳化)**:去掉 iPhone 外壳,保留 375px 窄屏内容面板,CSS 与小程序 article/detail 完全一致。渐进可扩展方案 E(标签切换多设备宽度)。
+
+核心论据:
+- 编辑器预览的目标是验证内容排版,不是仿真设备
+- 去掉外壳后内容区从 ~285px 扩展到 375px,可读性直接提升
+- 公众号后台、飞书文档、Notion 的移动端预览全部采用去壳化方案
+- 实现成本 = 删除 200 行外壳代码 + 微调布局