以上代码还存在一个问题,当我点击添加图片按钮时悬浮窗就出现了,我需要的是我添加图片后,当我点图片时才出现悬浮窗放大土图片】
时间: 2024-04-17 09:26:38 浏览: 187
图片放大镜(悬浮在原图上)
5星 · 资源好评率100%
非常抱歉给您带来的困扰。为了实现您所描述的功能,即当点击图片时才显示悬浮窗进行放大,我们需要对代码进行一些修改。
请参考以下修正后的代码:
```javascript
function showPopup(src) {
var overlay = document.createElement("div");
overlay.style.position = "fixed";
overlay.style.top = "0";
overlay.style.left = "0";
overlay.style.width = "100%";
overlay.style.height = "100%";
overlay.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
overlay.style.zIndex = "9998"; // 设置遮罩层的z-index低于悬浮窗,但高于其他元素
document.body.appendChild(overlay);
var popup = document.createElement("div");
popup.style.position = "fixed";
popup.style.top = "50%";
popup.style.left = "50%";
popup.style.transform = "translate(-50%, -50%)";
popup.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
popup.style.zIndex = "9999";
popup.style.width = "75%"; // 设置悬浮窗宽度为页面宽度的75%
popup.style.height = "75%"; // 设置悬浮窗高度为页面高度的75%
popup.style.overflow = "hidden";
var imgContainer = document.createElement("div");
imgContainer.style.display = "flex";
imgContainer.style.justifyContent = "center";
imgContainer.style.alignItems = "center";
imgContainer.style.backgroundColor = "transparent";
imgContainer.style.width = "100%";
imgContainer.style.height = "100%";
var img = document.createElement("img");
img.src = src;
img.alt = "放大照片";
img.style.maxWidth = "100%";
img.style.maxHeight = "100%";
var scale = 1; // 初始缩放比例
var scaleFactor = 0.1; // 每次滚动的缩放因子
// 点击图片放大/缩小
img.onclick = function () {
scale += 0.1;
img.style.transform = `scale(${scale})`;
};
// 鼠标滚轮事件
popup.onwheel = function (e) {
e.preventDefault(); // 阻止默认滚轮行为处理页面滚动
scale += e.deltaY > 0 ? -scaleFactor : scaleFactor; // 根据滚轮滚动方向确定缩放比例
scale = Math.max(scale, 0.1); // 最小缩放比例为0.1
img.style.transform = `scale(${scale})`;
};
overlay.onclick = function () {
document.body.removeChild(popup);
document.body.removeChild(overlay);
};
imgContainer.appendChild(img);
popup.appendChild(imgContainer);
document.body.appendChild(popup);
}
```
请将以上修正后的代码应用到您的项目中,并重新测试点击图片放大的功能。如果问题仍然存在,请提供更多详细信息或尝试提供可运行的示例代码,以便我能够更好地帮助您解决问题。非常抱歉给您带来的困扰。
阅读全文