function showPopup() { var popup = document.getElementById("popup"); var popupImg = document.getElementById("popupImg"); var scale = 1; // 在设置弹出窗口中的图片之前获取弹出窗口的宽度和高度 var popupWidth = popup.offsetWidth; var popupHeight = popup.offsetHeight; // 计算图片应该在弹出窗口中居中显示的位置和缩放比例 var imgWidth = Math.min(popupWidth, popupImg.width); var imgHeight = Math.min(popupHeight, popupImg.height); var imgLeft = (popupWidth - imgWidth) / 2; var imgTop = (popupHeight - imgHeight) / 2; scale = Math.min(popupWidth / popupImg.width, popupHeight / popupImg.height); // 设置弹出窗口中的图片位置和缩放 popupImg.style.left = imgLeft + "px"; popupImg.style.top = imgTop + "px"; popupImg.style.transform = scale(${scale}); // 设置弹出窗口中的图片 popupImg.src = this.src; // 显示弹出窗口 popup.style.display = "block"; // 添加点击事件监听器,点击其他区域时隐藏弹出窗口 popup.onclick = function () { popup.style.display = "none"; }; }使用这段代码后,网页添加图片无法正常显示
时间: 2024-04-08 10:31:24 浏览: 71
DIV常见任务(上) —常规任务(显示滚动条/隐藏div/禁止事件冒泡等等)
可能是因为在设置图片位置和缩放时出现了一些问题。你可以尝试以下修改:
1. 确保在调用`showPopup`函数之前,DOM元素已经加载完毕。可以将代码放在`window.onload`事件回调函数中,或者将代码放在HTML页面底部。
2. 使用`naturalWidth`和`naturalHeight`属性获取图片的原始宽度和高度,而不是`width`和`height`属性。
3. 将`scale(${scale})`修改为`scale(${scale})`,确保`transform`属性的值正确。
修改后的代码如下所示:
```javascript
function showPopup() {
var popup = document.getElementById("popup");
var popupImg = document.getElementById("popupImg");
var scale = 1;
// 在设置弹出窗口中的图片之前获取弹出窗口的宽度和高度
var popupWidth = popup.offsetWidth;
var popupHeight = popup.offsetHeight;
// 计算图片应该在弹出窗口中居中显示的位置和缩放比例
var imgWidth = Math.min(popupWidth, popupImg.naturalWidth);
var imgHeight = Math.min(popupHeight, popupImg.naturalHeight);
var imgLeft = (popupWidth - imgWidth) / 2;
var imgTop = (popupHeight - imgHeight) / 2;
scale = Math.min(popupWidth / popupImg.naturalWidth, popupHeight / popupImg.naturalHeight);
// 设置弹出窗口中的图片位置和缩放
popupImg.style.left = imgLeft + "px";
popupImg.style.top = imgTop + "px";
popupImg.style.transform = `scale(${scale})`;
// 设置弹出窗口中的图片
popupImg.src = this.src;
// 显示弹出窗口
popup.style.display = "block";
// 添加点击事件监听器,点击其他区域时隐藏弹出窗口
popup.onclick = function () {
popup.style.display = "none";
};
}
```
请尝试使用修改后的代码,并确保在调用`showPopup`函数之前已经加载了相关的DOM元素。如果问题仍然存在,请提供更多的相关代码和错误信息,以便更好地帮助你解决问题。
阅读全文