Files
invitation-maker/README.md
ZF sun 8789a76ecc fix(editor): 修复字号读取及工具栏逻辑
重构编辑器工具栏字号调整逻辑,优先读取内联样式字号,
修复字号显示不同步问题,并更新 README 文档
2026-05-15 14:47:57 +08:00

131 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 极简邀请函制作工具
一款以手机端为主、电脑端兼容的简易邀请函在线制作工具。无需安装、无需后端,打开浏览器即可使用。用户可上传背景图、添加文字/图片/二维码、拖动调整位置,最终一键生成并保存完整邀请函图片。
---
## 项目结构
```
d:\projects\invitation-maker/
├── index.html # 主入口页面
├── README.md # 项目说明文档
├── IMPROVEMENTS.md # 升级改进计划
├── images/
│ └── default-bg.jpg # 默认背景图片
├── css/
│ ├── style.css # 主样式
│ └── qr.css # 二维码功能样式
└── js/
├── script.js # 核心应用逻辑(~3970 行)
├── qr.js # 二维码功能模块
└── inputs-config.js # 输入框初始化配置(独立配置文件)
```
---
## 功能特性
### 核心功能
| 功能 | 说明 |
|------|------|
| **背景图** | 上传 jpg/png 图片,自动适应预览区域,保持原比例,可左右滑动调整位置,支持缩放和透明度调节 |
| **默认背景** | 页面打开自动加载默认背景图,点击「背景图」按钮可更换 |
| **文字编辑** | 3 个预设输入框(企业、嘉宾、编号),支持添加更多文本,双击编辑文字,单击拖拽位置 |
| **文本样式** | 加粗、斜体、字体选择、字号选择、颜色选择,通过编辑器工具栏操作 |
| **层叠图** | 可添加多张层叠图片,置于背景图之上,支持拖动、缩放、旋转(含 0°/90°/-90° 吸附)、透明度、水平镜像、删除 |
| **二维码** | 弹窗输入内容生成二维码,支持拖动、缩放、透明度调节,可添加到画布任意位置 |
| **图层管理** | 侧边栏图层面板,显示所有元素层级,支持顺序调整(上移/下移/置顶/置底)、可见性切换、删除 |
| **撤销/重做** | 支持操作历史撤销(Ctrl+Z)与重做(Ctrl+Y) |
| **辅助线** | 拖拽元素时红色吸附对齐辅助线 |
| **网格线** | 可选显示 10px 网格辅助线 |
| **元素锁定** | 锁定后不可拖动/编辑(锁定状态黄色虚线) |
| **位置信息** | 选中或拖拽输入框时,上方显示实时 left/top 坐标 |
### 编辑器工具栏
编辑器工具栏固定于顶部工具栏下方,根据选中元素自动切换:
| 选中元素 | 显示的工具 |
|---------|-----------|
| 文字输入框 | 加粗、斜体、字体、字号、颜色、删除、锁定 |
| 层叠图 | 透明度、旋转、水平镜像、缩放、删除、锁定 |
| 背景图 | 缩放、透明度 |
| 二维码 | 透明度、缩放 |
### 图片保存/导出
- **电脑端**:右键预览区域 → 合成并保存/复制/预览图片
- **手机端**:长按预览区域或点击「保存/预览」按钮 → 弹窗选择保存/预览
- **输出格式**:高清 PNG,至少 2x 分辨率(最小 1080x1920),所见即所得
- **微信兼容**:针对微信内置浏览器优化画布尺寸限制和渲染逻辑
### 输入框配置
三个预设输入框的初始化位置和样式通过独立配置文件 `js/inputs-config.js` 管理,可直接修改无需改动主逻辑:
```js
// input1 - 企业(left: 100px, top: 218.4px)
// input2 - 嘉宾(left: 100px, top: 261.4px)
// input3 - 编号(left: 100px, top: 308.1px)
```
---
## 使用说明
### 最简流程
1. 打开页面(自动加载默认背景图)
2. 上传背景图(可选,点击「背景图」按钮更换)
3. 双击输入框填写文字
4. 单击输入框拖动到合适位置
5. 电脑:右键预览区域保存/复制图片
6. 手机:长按预览区域或点击「保存/预览」保存图片
### 进阶操作
- **添加层叠图**:点击「层叠图」按钮,选中后可拖动/缩放/旋转/镜像
- **添加文本框**:点击「文本」按钮,可任意添加更多文字元素
- **添加二维码**:点击左下角「二维码」按钮,输入内容生成
- **图层管理**:点击「图层」按钮打开右侧面板,可调整顺序和可见性
- **撤销/重做**:使用顶部工具栏的撤销/重做按钮或快捷键(Ctrl+Z/Ctrl+Y)
---
## 预览区域
- 固定 3:5 宽高比(960x1361)
- 容器最大宽度 360px,页面居中显示
- 背景图自适应铺满容器,超出部分自动裁剪
---
## 技术栈
- **原生 HTML/CSS/JS**,零外部依赖
- 使用 `canvas` 进行高清无损合成导出
- 图片缓存系统(最大缓存 20 张)
- 内存监控与自动清理
- 防抖/节流优化
- **二维码**:基于 qrcodejs 库生成
- 所有资源均可在子目录部署(如 `/tool/invitation-maker/`)
---
## 开发计划
详见 `IMPROVEMENTS.md`,主要方向:
- 代码模块化重构
- 模板系统
- 更多元素类型(形状、贴纸等)
- 高级文本功能
- 图片滤镜与裁剪
- 自动保存与草稿
- 暗黑模式
---
*最后更新: 2026-05-15*