From 9ed83631f7a1f4c83ca74db366dcca6fdeb3a512 Mon Sep 17 00:00:00 2001
From: Zhukj <3262118957>
Date: Mon, 20 Apr 2026 13:55:34 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E5=B0=863=E4=B8=AA=E6=96=87=E6=9C=AC?=
=?UTF-8?q?=E6=A1=86=E9=BB=98=E8=AE=A4=E5=88=9D=E5=A7=8B=E6=96=87=E5=AD=97?=
=?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=8D=A0=E4=BD=8D=E6=8F=90=E7=A4=BA=E8=AF=AD?=
=?UTF-8?q?=EF=BC=8C=E7=BB=9F=E4=B8=80=E6=8F=90=E7=A4=BA=E6=96=87=E6=A1=88?=
=?UTF-8?q?=EF=BC=9A=E8=AF=B7=E8=BE=93=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
css/style.css | 7 +++++++
index.html | 6 +++---
js/script.js | 36 ++++++++++++++++++++++++++++++++++++
3 files changed, 46 insertions(+), 3 deletions(-)
diff --git a/css/style.css b/css/style.css
index 3733b3d..6115c37 100644
--- a/css/style.css
+++ b/css/style.css
@@ -397,6 +397,13 @@ html, body {
cursor: grab;
}
+/* 空输入框显示 placeholder */
+.text-input.show-placeholder::before {
+ content: attr(data-placeholder);
+ color: #999;
+ pointer-events: none;
+}
+
/* 编辑状态(双击) - 显示实线轮廓 */
.text-input.editing {
outline: 2px solid #4a90e2;
diff --git a/index.html b/index.html
index e459e54..8e7937a 100644
--- a/index.html
+++ b/index.html
@@ -86,11 +86,11 @@
请点击上方「添加图片」按钮上传背景图
diff --git a/js/script.js b/js/script.js
index ba57ea9..32c8fc4 100644
--- a/js/script.js
+++ b/js/script.js
@@ -851,6 +851,28 @@
let clickStartY = 0;
let hasMoved = false;
+ // 检查是否需要显示 placeholder
+ function updatePlaceholder() {
+ // 获取纯文本内容(排除删除按钮)
+ const textContent = Array.from(element.childNodes)
+ .filter(node => node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !node.classList.contains('text-delete-btn')))
+ .map(node => node.textContent)
+ .join('')
+ .trim();
+
+ if (!textContent) {
+ element.classList.add('show-placeholder');
+ } else {
+ element.classList.remove('show-placeholder');
+ }
+ }
+
+ // 初始化时检查
+ updatePlaceholder();
+
+ // 监听输入事件,控制 placeholder 显示
+ element.addEventListener('input', updatePlaceholder);
+
// 鼠标/触摸按下
element.addEventListener('mousedown', handleStart);
element.addEventListener('touchstart', handleStart, { passive: false });
@@ -1083,6 +1105,20 @@
element.classList.remove('editing');
element.classList.add('selected');
element.contentEditable = 'false';
+
+ // 检查是否需要显示 placeholder
+ const textContent = Array.from(element.childNodes)
+ .filter(node => node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !node.classList.contains('text-delete-btn')))
+ .map(node => node.textContent)
+ .join('')
+ .trim();
+
+ if (!textContent) {
+ element.classList.add('show-placeholder');
+ } else {
+ element.classList.remove('show-placeholder');
+ }
+
element.blur();
editingInput = null;
// 隐藏编辑器工具栏