feat(工具栏): 添加水平镜像功能并调整工具栏样式

- 在工具栏添加水平镜像按钮
- 调整工具栏间距和分割线样式
- 实现图片水平镜像功能及状态同步
This commit is contained in:
Zhukj
2026-04-21 18:28:43 +08:00
parent 0665987a03
commit 13a282d93a
3 changed files with 42 additions and 3 deletions

View File

@@ -158,7 +158,7 @@ html, body {
display: none; display: none;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
gap: 4px; gap: 2px;
width: 100%; width: 100%;
} }
@@ -193,17 +193,22 @@ html, body {
font-style: italic; font-style: italic;
} }
/* 镜像按钮样式 */
.toolbar-btn.mirror-btn {
font-size: 18px;
}
.toolbar-divider { .toolbar-divider {
width: 1px; width: 1px;
height: 24px; height: 24px;
background: #ddd; background: #ddd;
margin: 0 2px; margin: 0 1px;
} }
.toolbar-label { .toolbar-label {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 2px;
font-size: 12px; font-size: 12px;
color: #666; color: #666;
} }

View File

@@ -63,6 +63,8 @@
<input type="range" id="rotateSlider" min="-180" max="180" value="0" class="rotate-slider"> <input type="range" id="rotateSlider" min="-180" max="180" value="0" class="rotate-slider">
<span id="rotateValue">0°</span> <span id="rotateValue">0°</span>
</label> </label>
<div class="toolbar-divider"></div>
<button class="toolbar-btn mirror-btn" id="mirrorHBtn" title="水平镜像">↔</button>
</div> </div>
<!-- 背景图编辑工具 --> <!-- 背景图编辑工具 -->
<div class="toolbar-group bg-tools" id="bgTools"> <div class="toolbar-group bg-tools" id="bgTools">

View File

@@ -23,6 +23,7 @@
const opacityValue = document.getElementById('opacityValue'); const opacityValue = document.getElementById('opacityValue');
const rotateSlider = document.getElementById('rotateSlider'); const rotateSlider = document.getElementById('rotateSlider');
const rotateValue = document.getElementById('rotateValue'); const rotateValue = document.getElementById('rotateValue');
const mirrorHBtn = document.getElementById('mirrorHBtn');
const bgScaleSlider = document.getElementById('bgScaleSlider'); const bgScaleSlider = document.getElementById('bgScaleSlider');
const bgScaleValue = document.getElementById('bgScaleValue'); const bgScaleValue = document.getElementById('bgScaleValue');
const bgOpacitySlider = document.getElementById('bgOpacitySlider'); const bgOpacitySlider = document.getElementById('bgOpacitySlider');
@@ -150,6 +151,30 @@
} }
}); });
// 水平镜像按钮
mirrorHBtn.addEventListener('click', () => {
if (selectedOverlay) {
const img = selectedOverlay.querySelector('img');
if (img) {
const currentTransform = img.style.transform || '';
const isMirroredH = currentTransform.includes('scaleX(-1)');
// 移除之前的 scaleX 变换
let newTransform = currentTransform.replace(/scaleX\(-?1\)/g, '').trim();
// 如果之前没有水平镜像,则添加
if (!isMirroredH) {
newTransform = newTransform ? newTransform + ' scaleX(-1)' : 'scaleX(-1)';
mirrorHBtn.classList.add('active');
} else {
mirrorHBtn.classList.remove('active');
}
img.style.transform = newTransform;
}
}
});
// 背景图缩放滑块 // 背景图缩放滑块
bgScaleSlider.addEventListener('input', (e) => { bgScaleSlider.addEventListener('input', (e) => {
bgImageScale = e.target.value / 100; bgImageScale = e.target.value / 100;
@@ -654,6 +679,13 @@
const currentRotate = rotateMatch ? parseFloat(rotateMatch[1]) : 0; const currentRotate = rotateMatch ? parseFloat(rotateMatch[1]) : 0;
rotateSlider.value = currentRotate; rotateSlider.value = currentRotate;
rotateValue.textContent = currentRotate + '°'; rotateValue.textContent = currentRotate + '°';
// 更新镜像按钮状态
const img = overlayEl.querySelector('img');
if (img) {
const imgTransform = img.style.transform || '';
mirrorHBtn.classList.toggle('active', imgTransform.includes('scaleX(-1)'));
}
} }
// 计算图片滑动边界 // 计算图片滑动边界