您的代码逻辑是正确的,点击图片时会调用`toggleZoom`函数来放大或取消放大图片。但是根据您提供的代码片段,我们发现没有为图片绑定点击事件。
解决方法是为每个图片元素添加点击事件监听器,在点击时调用`toggleZoom`函数。您可以在`<img>`标签中添加`onclick`属性,并传递图片的ID作为参数。
以下是修改后的代码示例:
<!DOCTYPE html>
<html>
<head>
<style>
/* 省略样式,保持不变 */
.modal {
display: none; /* 初始状态下隐藏弹窗 */
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 50%;
height: 50%;
overflow: auto; /* 以防图片尺寸大于屏幕尺寸时可以滚动 */
background-color: rgba(0, 0, 0, 0.9); /* 半透明黑色背景 */
}
.modal-content {
margin: auto;
display: block;
width: auto;
max-width: 80%; /* 设置最大宽度 */
max-height: 80vh; /* 设置最大高度为视口高度的80% */
}
</style>
</head>
<body>
<!-- 省略部分HTML代码 -->
<img id="img1" src="image1.jpg" onclick="toggleZoom('img1')">
<img id="img2" src="image2.jpg" onclick="toggleZoom('img2')">
<img id="img3" src="image3.jpg" onclick="toggleZoom('img3')">
<div id="myModal" class="modal">
<img id="img01" class="modal-content">
</div>
<script>
var zoomed = false;
function toggleZoom(imgId) {
if (!zoomed) {
// 如果图片未放大,则显示弹窗并放大图片
document.getElementById('myModal').style.display = "block";
document.getElementById("img01").src = document.getElementById(imgId).src;
zoomed = true; // 设置放大状态为true
} else {
// 如果图片已放大,则关闭弹窗
document.getElementById('myModal').style.display = "none";
zoomed = false; // 设置放大状态为false
}
}
</script>
</body>
</html>
在上例中,我添加了三个图片元素,并且为每一个元素添加了`onclick`属性,当点击图片时,调用`toggleZoom`函数,并传递对应的图片ID作为参数。这样就可以实现点击图片放大或取消放大的功能了。
希望能帮到您!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |