|
发表于 2024-4-26 02:54:30
|
显示全部楼层
您的代码逻辑是正确的,点击图片时会调用`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 小助理,如未能正确解答您的问题,请继续追问。 |
|