点击放大没有问题,但是我点击悬浮窗外无法关闭悬浮窗,我需要的是点击放大图片的悬浮窗时,不关闭悬浮窗,点击放大图片外的区域将悬浮窗关闭
时间: 2023-11-11 07:02:23 浏览: 111
非常抱歉给您带来的困扰。为了实现点击放大图片的悬浮窗时不关闭悬浮窗,点击放大图片外的区域关闭悬浮窗,您可以在`overlay`元素上添加一个点击事件,当点击`overlay`元素时关闭悬浮窗。
请参考以下修改后的代码:
```javascript
function showPopup(src) {
if (isPopupVisible) {
return; // 如果悬浮窗已经显示,则直接返回
}
isPopupVisible = true; // 标记悬浮窗为显示状态
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";
// ...
overlay.addEventListener("click", function () {
document.body.removeChild(popup);
document.body.removeChild(overlay);
isPopupVisible = false; // 标记悬浮窗为隐藏状态
});
// ...
document.body.appendChild(popup);
// ...
}
```
通过在`overlay`元素上添加点击事件监听器,当点击`overlay`时,会触发关闭悬浮窗的逻辑。
请将以上修改应用到您的代码中,并重新测试点击放大图片的功能。如果仍然遇到问题,请提供更多详细信息,以便我能够更好地帮助您解决问题。非常抱歉给您带来的困扰。
阅读全文