function previewImage(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { var img = document.createElement("img"); img.src = e.target.result; img.alt = "照片"; // 添加图片点击事件处理函数 img.onclick = function () { showPopup(img.src); // 点击图片放大时显示悬浮窗 }; // 隐藏原始的input元素 input.style.display = "none"; // 添加图片到input元素的父节点 input.parentNode.appendChild(img); }; reader.readAsDataURL(input.files[0]); } } var isPopupVisible = false; // 悬浮窗显示状态 function showPopup(src) { if (isPopupVisible) { return; // 如果悬浮窗已经显示,则直接返回 } isPopupVisible = true; // 标记悬浮窗为显示状态 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% var imgContainer = document.createElement("div"); imgContainer.style.display = "flex"; imgContainer.style.justifyContent = "center"; imgContainer.style.alignItems = "center"; 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.onwheel = function (e) { e.preventDefault(); // 阻止默认滚轮行为处理页面滚动 scale += e.deltaY > 0 ? -scaleFactor : scaleFactor; // 根据滚轮滚动方向确定缩放比例 scale = Math.max(scale, 0.1); // 最小缩放比例为0.1 img.style.transform = `scale(${scale})`; }; // 关闭悬浮窗 popup.onclick = function () { document.body.removeChild(popup); isPopupVisible = false; // 标记悬浮窗为隐藏状态 }; imgContainer.appendChild(img); popup.appendChild(imgContainer); document.body.appendChild(popup); }这段代码中,我点击添加图片时就出现悬浮窗可是我需要在添加图片时,悬浮窗不出现
时间: 2024-04-16 10:25:33 浏览: 98
非常抱歉,我之前的回答有误。根据您的需求,在添加图片时不显示悬浮窗,我们需要对代码进行进一步的调整。
请使用以下代码示例:
```javascript
var popup; // 声明一个全局变量来存储悬浮窗元素
function previewImage(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
var img = document.createElement("img");
img.src = e.target.result;
img.alt = "照片";
// 添加图片点击事件处理函数
img.onclick = function () {
showPopup(img.src); // 点击图片放大时显示悬浮窗
};
// 隐藏原始的input元素
input.style.display = "none";
// 添加图片到input元素的父节点
input.parentNode.appendChild(img);
};
reader.readAsDataURL(input.files[0]);
}
}
function showPopup(src) {
if (popup) {
// 如果悬浮窗已存在,则直接更新图片内容
var img = popup.querySelector("img");
img.src = src;
} else {
// 如果悬浮窗不存在,则创建并显示悬浮窗
popup = document.createElement("div");
popup.style.display = "none"; // 初始时隐藏悬浮窗
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.onwheel = function (e) {
e.preventDefault(); // 阻止默认滚轮行为处理页面滚动
scale += e.deltaY > 0 ? -scaleFactor : scaleFactor; // 根据滚轮滚动方向确定缩放比例
scale = Math.max(scale, 0.1); // 最小缩放比例为0.1
img.style.transform = `scale(${scale})`;
};
// 关闭悬浮窗
img.onclick = function () {
if (popup.style.display === "none") {
popup.style.display = "block"; // 点击图片时显示悬浮窗
} else {
popup.style.display = "none"; // 再次点击图片时隐藏悬浮窗
}
};
popup.appendChild(img);
document.body.appendChild(popup);
}
}
```
在上述修改后的代码中,我们通过将悬浮窗的初始样式设置为`display: none`来隐藏悬浮窗。当您点击已添加的图片时,将会切换悬浮窗的显示状态,点击一次显示悬浮窗,再次点击隐藏悬浮窗。
这样,当您点击添加图片时,不会显示悬浮窗;而在点击已添加的图片时,可以根据需求来控制悬浮窗的显示和隐藏。
非常抱歉之前的回答有误,希望这次修改能够满足您的需求!如有任何进一步的问题,请随时提问。
阅读全文