5.9 KiB
5.9 KiB
Note2Any UI 重构完成总结
概述
基于 Figma 设计,完成了 Note2Any 插件的微信公众号(wechat)和小红书(xhs)预览界面的统一重构。
重构目标
- 使用 Figma 设计:完全按照 Figma 设计规范重构 UI
- 统一布局:wechat 和 xhs 使用共享的组件样式
- 清晰结构:代码易读、易维护、优雅
- 移除冗余:去除"代码高亮"选项,简化界面
完成的工作
1. 创建统一的 CSS 组件样式
文件:src/shared-platform.css 和嵌入到 styles.css
包含的组件:
.note2any-platform-container- 主容器.note2any-platform-header- 顶部平台选择器栏(粉蓝渐变背景).note2any-platform-selector- 平台选择器区域.note2any-button-group- 按钮组(刷新、发布、访问).note2any-button- 统一按钮样式(#4a68a7 蓝色).note2any-controls-row- 控制栏(账号、主题、宽度).note2any-field- 表单字段组件.note2any-content-area- 内容预览区域(圆角、滚动).note2any-bottom-toolbar- 底部工具栏(xhs 专用).note2any-fontsize-control- 字体大小控制.note2any-stepper- 步进器(± 按钮).note2any-pagination- 分页控制.note2any-slice-button- 切图按钮
2. 重构 wechat 预览界面
文件:src/wechat/wechat-preview.ts
改动:
- ✅ 使用新的
note2any-platform-container布局 - ✅ 顶部统一的平台选择器栏(📱 公众号 + 刷新/发布/访问按钮)
- ✅ "账号"选择器(原"公众号")
- ✅ "主题"选择器(原"样式")
- ✅ 移除了"代码高亮"选择器
- ✅ 预览内容渲染到
note2any-content-area中 - ✅ 内容水平自适应宽度、居中,垂直弹性,带滚动条
- ✅ 移除了旧的 Grid 单元格布局代码
3. 重构 xhs 预览界面
文件:src/xiaohongshu/xhs-preview.ts
改动:
- ✅ 使用新的
note2any-platform-container布局 - ✅ 顶部统一的平台选择器栏(📔 小红书 + 刷新/发布/访问按钮)
- ✅ "账号"选择器(xhs 访问账号)
- ✅ "主题"选择器
- ✅ "宽度"输入框(450px 格式)
- ✅ 移除了"代码高亮"选择器
- ✅ 预览内容渲染到
note2any-content-area中 - ✅ 底部工具栏包含:
- 当前图按钮(原"当前页切图")
- 字体大小控制(显示值 + ± 步进器)
- 分页控制(上一页/当前页/总页数/下一页)
- 全部图按钮(原"全部页切图")
- ✅ 移除了旧的 Grid 卡片布局代码
4. 样式统一和优化
改动:
- ✅ 所有组件使用统一的颜色方案
- ✅ 按钮使用 #4a68a7 蓝色,hover 时变深
- ✅ 顶部栏使用 Figma 设计的粉蓝渐变(#fbc2eb → #a6c1ee)
- ✅ 内容区域使用浅粉色背景(#f9f1f1)
- ✅ 容器背景使用浅蓝紫色(#c8caee)
- ✅ 统一的圆角、间距、字体
- ✅ 响应式设计支持移动端
Figma 设计对照
Wechat 设计 (node-id: 35-17)
- ✅ 顶部渐变栏
- ✅ 平台选择器 "📱 公众号"
- ✅ 三个操作按钮
- ✅ 账号和主题选择器
- ✅ 大的内容区域
Xhs 设计 (node-id: 36-171)
- ✅ 顶部渐变栏
- ✅ 平台选择器 "📔 小红书"
- ✅ 三个操作按钮
- ✅ 账号、主题和宽度输入
- ✅ 大的内容区域
- ✅ 底部工具栏(当前图、字体、分页、全部图)
技术要点
布局结构
.note2any-platform-container
├── .note2any-platform-header
│ ├── .note2any-platform-selector (平台选择 + emoji)
│ └── .note2any-button-group (刷新/发布/访问)
├── .note2any-controls-row
│ ├── .note2any-field-account (账号)
│ ├── .note2any-field-theme (主题)
│ └── .note2any-field-width (宽度 - xhs only)
├── .note2any-content-area
│ └── .note2any-content-wrapper
│ └── .note2any-content-inner (文章内容)
└── .note2any-bottom-toolbar (xhs only)
├── .note2any-slice-button (当前图)
├── .note2any-fontsize-control
├── .note2any-pagination
└── .note2any-slice-button (全部图)
CSS Flexbox 布局
- 主容器使用
flex-direction: column垂直排列 - 内容区域使用
flex: 1自动填充剩余空间 - 控制栏使用
flex-wrap: wrap支持响应式换行
兼容性保留
- 保留了隐藏的输入框以兼容现有逻辑
- 保留了
updateStyleAndHighlight方法签名 - 分页和字体控制保留原有的数据结构
文件变更清单
新增文件
src/shared-platform.css- 共享平台样式(已嵌入到 styles.css)
修改文件
src/wechat/wechat-preview.ts- 完全重构 build() 方法src/xiaohongshu/xhs-preview.ts- 完全重构 build() 方法styles.css- 添加共享平台样式到开头
删除的代码
-
wechat-preview.ts:
buildAccountRow()buildStyleRow()buildCoverRow()createCell()board属性highlightSelect属性
-
xhs-preview.ts:
createGridCard()highlightSelect属性- 旧的 Grid 卡片布局代码
构建和部署
npm run build # 编译 TypeScript
./build.sh # 构建并部署到 Obsidian
✅ 构建成功,无编译错误
测试建议
- 打开 Obsidian 并重新加载插件
- 测试微信公众号预览:
- 检查顶部栏、按钮和选择器显示
- 测试刷新、发布、访问按钮
- 检查预览内容滚动
- 测试小红书预览:
- 检查顶部栏、按钮和选择器显示
- 测试字体大小调整
- 测试分页功能
- 测试当前图和全部图切图
- 测试响应式布局(调整窗口大小)
下一步
- 实现小红书"访问"按钮功能
- 实现平台选择器的实际切换逻辑
- 优化移动端响应式布局
- 添加加载状态和错误提示
重构完成时间:2025-01-21
重构者:GitHub Copilot
状态:✅ 完成并部署