Files
invitation-maker/index.html

184 lines
8.9 KiB
HTML
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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>极简邀请函制作</title>
<link rel="stylesheet" href="./css/style.css">
<link rel="stylesheet" href="./css/qr.css">
</head>
<body>
<div class="app">
<!-- 顶部工具栏 -->
<div class="toolbar">
<button class="btn" id="addImageBtn">背景图</button>
<button class="btn" id="addOverlayBtn">层叠图</button>
<button class="btn" id="addTextBtn">文本</button>
<div class="toolbar-divider-v divider-left"></div>
<div class="toolbar-action-group">
<button class="toolbar-btn-icon" id="undoBtn" title="撤销 (Ctrl+Z)">↩</button>
<button class="toolbar-btn-icon" id="redoBtn" title="重做 (Ctrl+Y)">↪</button>
</div>
<div class="toolbar-divider-v divider-right"></div>
<button class="btn" id="layersBtn">图层</button>
<button class="btn btn-primary" id="saveBtn">保存/预览</button>
</div>
<!-- 编辑器工具栏(文本/图片共用) -->
<div class="editor-toolbar" id="editorToolbar">
<!-- 文本编辑工具 -->
<div class="toolbar-group text-tools" id="textTools">
<button class="toolbar-btn" id="lockBtn" title="锁定位置">🔒</button>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>粗细</span>
<input type="range" id="weightSlider" min="400" max="900" step="100" value="700" class="weight-slider">
<span id="weightValue">700</span>
</label>
<div class="toolbar-divider"></div>
<button class="toolbar-btn italic" id="italicBtn" title="斜体">I</button>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>颜色</span>
<input type="color" id="colorPicker" value="#000000">
</label>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>字体</span>
<select id="fontPicker">
<option value="-apple-system, BlinkMacSystemFont, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Noto Sans CJK SC, sans-serif">系统默认</option>
<option value="PingFang SC, Microsoft YaHei, Noto Sans CJK SC, sans-serif">苹方/雅黑</option>
<option value="Hiragino Sans GB, Microsoft YaHei, Noto Sans CJK SC, sans-serif">冬青黑体</option>
<option value="SimHei, Microsoft YaHei, Noto Sans CJK SC, sans-serif">黑体</option>
<option value="SimSun, Songti SC, serif">宋体</option>
</select>
</label>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>字号</span>
<div class="roller-picker" id="fontSizePicker">
<div class="roller-arrow roller-up">▲</div>
<div class="roller-value">16</div>
<div class="roller-arrow roller-down">▼</div>
</div>
</label>
</div>
<!-- 图片编辑工具 -->
<div class="toolbar-group image-tools" id="imageTools">
<label class="toolbar-label">
<span>透明度</span>
<input type="range" id="opacitySlider" min="0" max="100" value="100" class="opacity-slider">
<span id="opacityValue">100%</span>
</label>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>旋转</span>
<input type="range" id="rotateSlider" min="-180" max="180" value="0" class="rotate-slider">
<span id="rotateValue">0°</span>
</label>
<div class="toolbar-divider"></div>
<button class="toolbar-btn mirror-btn" id="mirrorHBtn" title="水平镜像">↔</button>
</div>
<!-- 二维码编辑工具 -->
<div class="toolbar-group qr-tools" id="qrTools">
<label class="toolbar-label">
<span>透明度</span>
<input type="range" id="qrOpacitySlider" min="0" max="100" value="100" class="opacity-slider">
<span id="qrOpacityValue">100%</span>
</label>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>缩放</span>
<input type="range" id="qrScaleSlider" min="0" max="200" value="100" class="scale-slider">
<span id="qrScaleValue">100%</span>
</label>
</div>
<!-- 背景图编辑工具 -->
<div class="toolbar-group bg-tools" id="bgTools">
<label class="toolbar-label">
<span>透明度</span>
<input type="range" id="bgOpacitySlider" min="0" max="100" value="100" class="opacity-slider">
<span id="bgOpacityValue">100%</span>
</label>
<div class="toolbar-divider"></div>
<label class="toolbar-label">
<span>缩放</span>
<input type="range" id="bgScaleSlider" min="100" max="300" value="100" class="scale-slider">
<span id="bgScaleValue">100%</span>
</label>
</div>
</div>
<!-- 图片展示区 -->
<div class="canvas-area" id="canvasArea">
<div class="preview image-container empty" id="imageContainer">
<!-- 背景图层 -->
<div class="preview-bg-layer" id="bgLayer">
<img id="bgImage" src="" alt="背景图">
</div>
<!-- 层叠图图层 -->
<div class="overlay-layer" id="overlayLayer"></div>
<!-- 1px 网格线 -->
<div class="grid-lines" id="gridLines"></div>
<!-- 拖拽辅助线 -->
<div class="guide-line guide-horizontal" id="guideH"></div>
<div class="guide-line guide-vertical" id="guideV"></div>
<!-- 输入框图层 -->
<div class="preview-input-layer" id="previewInputLayer">
<!-- 文字输入框1 - 企业 -->
<div class="text-input hidden" id="input1" contenteditable="false"></div>
<!-- 文字输入框2 - 姓名 -->
<div class="text-input hidden" id="input2" contenteditable="false"></div>
<!-- 文字输入框3 - 编号 -->
<div class="text-input hidden" id="input3" contenteditable="false"></div>
</div>
<!-- 提示文字(最上层,层叠图之下) -->
<div class="empty-tip" id="emptyTip">请点击上方「添加图片」按钮上传背景图</div>
</div>
</div>
<!-- 图层面板 -->
<div class="layers-panel" id="layersPanel">
<div class="layers-header">
<span class="layers-title">图层</span>
<button class="layers-close" id="layersClose">×</button>
</div>
<div class="layers-list" id="layersList">
<!-- 图层项将动态生成 -->
</div>
<div class="layers-actions">
<button class="layers-btn" id="layerToggleVisible" title="显示/隐藏">👁</button>
</div>
</div>
</div>
<input type="file" id="fileInput" accept="image/*" hidden>
<canvas id="exportCanvas" hidden></canvas>
<!-- 二维码功能 -->
<button id="qr-btn" title="添加二维码">二维码</button>
<div id="qr-modal">
<div class="qr-box">
<div class="qr-header">
<h3>生成二维码</h3>
<button class="qr-close">&times;</button>
</div>
<div class="qr-body">
<input type="text" id="qr-input" placeholder="输入网址或文字" maxlength="200">
<div id="qr-preview"></div>
</div>
<div class="qr-footer">
<button class="qr-btn qr-cancel">取消</button>
<button class="qr-btn qr-ok">添加到画布</button>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
<script src="./js/inputs-config.js"></script>
<script src="./js/script.js"></script>
<script src="./js/qr.js"></script>
</body>
</html>