// 添加滚轮事件监听器,实现缩放功能 popup.onwheel = function (event) { event.preventDefault(); scale += event.deltaY * -0.01; scale = Math.max(0.5, scale); // 设置最小缩放比例 scale = Math.min(3, scale); // 设置最大缩放比例 popupImg.style.transform = `scale(${scale})`; }; }我点击图片放大后,能够移动图片放大后的位置
时间: 2024-04-12 18:31:34 浏览: 176
c# 用滚轮、单击按钮事件实现图片放大缩小移动
要实现点击图片放大后能够移动放大后的位置,您可以在`showPopup`函数中添加鼠标拖动事件监听器。通过监听鼠标的`mousedown`、`mousemove`和`mouseup`事件,您可以实现拖动图片的功能。以下是修改后的代码:
```javascript
function showPopup(imageSrc) {
var popup = document.createElement("div");
var popupImg = document.createElement("img");
var scale = 1;
var isDragging = false;
var startX, startY, translateX, translateY;
// 设置弹出窗口中的图片
popupImg.src = imageSrc;
popupImg.style.transform = `scale(${scale})`;
// 设置悬浮窗样式
popup.style.position = "fixed";
popup.style.top = "10%";
popup.style.left = "10%";
popup.style.width = "80%";
popup.style.height = "80%";
popup.style.backgroundColor = "transparent";
popup.style.zIndex = "9999";
// 添加图片到悬浮窗
popup.appendChild(popupImg);
document.body.appendChild(popup);
// 居中弹出窗口
function centerPopup() {
var windowHeight = window.innerHeight;
var popupHeight = popup.offsetHeight;
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
var offset = (windowHeight - popupHeight) / 2 + scrollTop;
// 设置弹出窗口的垂直位置
popup.style.top = offset + "px";
}
// 初始化居中弹出窗口
centerPopup();
// 添加滚动和调整窗口大小事件监听器
window.addEventListener("scroll", centerPopup);
window.addEventListener("resize", centerPopup);
// 点击事件监听器,点击其他区域时隐藏弹出窗口
popup.onclick = function () {
popup.style.display = "none";
};
// 移除滚动和调整窗口大小事件监听器
function removeListeners() {
window.removeEventListener("scroll", centerPopup);
window.removeEventListener("resize", centerPopup);
}
// 在窗口关闭时移除事件监听器
window.onbeforeunload = function () {
removeListeners();
};
// 鼠标按下事件,开始拖动图片
popupImg.onmousedown = function (event) {
isDragging = true;
startX = event.clientX;
startY = event.clientY;
translateX = 0;
translateY = 0;
};
// 鼠标移动事件,拖动图片
popupImg.onmousemove = function (event) {
if (isDragging) {
var deltaX = event.clientX - startX;
var deltaY = event.clientY - startY;
translateX += deltaX;
translateY += deltaY;
popupImg.style.transform = `scale(${scale}) translate(${translateX}px, ${translateY}px)`;
startX = event.clientX;
startY = event.clientY;
}
};
// 鼠标松开事件,停止拖动图片
popupImg.onmouseup = function () {
isDragging = false;
};
// 鼠标离开事件,停止拖动图片
popupImg.onmouseleave = function () {
isDragging = false;
};
// 滚轮事件监听器,实现缩放功能
popup.onwheel = function (event) {
event.preventDefault();
scale += event.deltaY * -0.01;
scale = Math.max(0.5, scale); // 设置最小缩放比例
scale = Math.min(3, scale); // 设置最大缩放比例
popupImg.style.transform = `scale(${scale}) translate(${translateX}px, ${translateY}px)`;
};
}
```
通过添加鼠标按下、移动和松开事件监听器,以及相应的处理函数,您可以实现拖动放大后的图片的功能。在拖动过程中,通过计算鼠标的移动距离并更新图片的`translateX`和`translateY`属性,从而实现拖动效果。
请尝试使用上述修改后的代码,并确保在调用`showPopup`函数时传递正确的参数。如果问题仍然存在,请提供更多关于问题的详细信息,以便我们能够更好地帮助您解决问题。
阅读全文