diff --git a/js/script.js b/js/script.js index 293e2aa..7566416 100644 --- a/js/script.js +++ b/js/script.js @@ -75,8 +75,11 @@ // 点击容器空白处取消选中 imageContainer.addEventListener('click', (e) => { - // 如果点击的是容器本身或背景图层,取消输入框选中 - if (e.target === imageContainer || e.target === bgLayer || e.target === bgImage) { + // 点击容器、背景图层或背景图片,取消输入框选中 + if (e.target === imageContainer || + e.target === bgLayer || + e.target === bgImage || + e.target.closest('.preview-bg-layer')) { deselectAll(); } }); @@ -140,7 +143,6 @@ imgWidth = containerWidth; imgHeight = imgWidth / imgRatio; } - // 计算滑动边界:严格以图片边缘为边界,不能露出白板 // 滑动公式:imageOffsetX = imageStartOffsetX + deltaX // 手指向右滑动(deltaX>0) → imageOffsetX增大 → 图片右移,显示右侧 @@ -210,6 +212,11 @@ return; } + // 如果正在编辑,先退出编辑状态 + if (editingInput) { + deselectAll(); + } + // 如果没有图片,不处理 if (!currentImage) { return; @@ -219,10 +226,10 @@ const clientX = isTouch ? e.touches[0].clientX : e.clientX; // 只有点击图片本身或背景图层时才启动图片滑动 - const isImageOrBgLayer = e.target === bgImage || - e.target === bgLayer || + const isImageOrBgLayer = e.target === bgImage || + e.target === bgLayer || e.target === imageContainer; - + if (!isImageOrBgLayer) { return; }