鱼C论坛

 找回密码
 立即注册
查看: 619|回复: 3

点击事件不生效

[复制链接]
发表于 2024-4-26 02:54:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<!DOCTYPE html>
<html lang="en">
<head>
    <style type="text/css">
        /* 省略样式,保持不变 */
        <style type="text/css">
        .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>
    </style>
</head>
<body>
    <div>
        <!-- 图片 -->
        <img loading="lazy" id="Img1" class="myImg" src="https://img.lzzyimg.com/upload/vod/20240425-1/b10ec7e0b36cd2b8984ec29deff110cc.jpg" onclick="toggleZoom('Img1')">
         <!-- 弹窗 -->
         <div id="myModal" class="modal" onclick="toggleZoom('Img1')">
            <!-- 弹窗内容 -->
            <img class="modal-content" id="img01" onclick="event.stopPropagation();">
        </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>
    </div>
</body>
</html>
实现点击图片放大或者取消
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-4-26 02:54:30 | 显示全部楼层
您的代码逻辑是正确的,点击图片时会调用`toggleZoom`函数来放大或取消放大图片。但是根据您提供的代码片段,我们发现没有为图片绑定点击事件。

解决方法是为每个图片元素添加点击事件监听器,在点击时调用`toggleZoom`函数。您可以在`<img>`标签中添加`onclick`属性,并传递图片的ID作为参数。

以下是修改后的代码示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <style>
  5.         /* 省略样式,保持不变 */
  6.         
  7.         .modal {
  8.             display: none; /* 初始状态下隐藏弹窗 */
  9.             position: fixed;
  10.             z-index: 1;
  11.             left: 0;
  12.             top: 0;
  13.             width: 50%;
  14.             height: 50%;
  15.             overflow: auto; /* 以防图片尺寸大于屏幕尺寸时可以滚动 */
  16.             background-color: rgba(0, 0, 0, 0.9); /* 半透明黑色背景 */
  17.         }

  18.         .modal-content {
  19.             margin: auto;
  20.             display: block;
  21.             width: auto;
  22.             max-width: 80%; /* 设置最大宽度 */
  23.             max-height: 80vh; /* 设置最大高度为视口高度的80% */
  24.         }
  25.     </style>
  26. </head>
  27. <body>
  28.     <!-- 省略部分HTML代码 -->

  29.     <img id="img1" src="image1.jpg" onclick="toggleZoom('img1')">
  30.     <img id="img2" src="image2.jpg" onclick="toggleZoom('img2')">
  31.     <img id="img3" src="image3.jpg" onclick="toggleZoom('img3')">

  32.     <div id="myModal" class="modal">
  33.         <img id="img01" class="modal-content">
  34.     </div>

  35.     <script>
  36.         var zoomed = false;

  37.         function toggleZoom(imgId) {
  38.             if (!zoomed) {
  39.                 // 如果图片未放大,则显示弹窗并放大图片
  40.                 document.getElementById('myModal').style.display = "block";
  41.                 document.getElementById("img01").src = document.getElementById(imgId).src;
  42.                 zoomed = true; // 设置放大状态为true
  43.             } else {
  44.                 // 如果图片已放大,则关闭弹窗
  45.                 document.getElementById('myModal').style.display = "none";
  46.                 zoomed = false; // 设置放大状态为false
  47.             }
  48.         }
  49.     </script>
  50. </body>
  51. </html>
复制代码


在上例中,我添加了三个图片元素,并且为每一个元素添加了`onclick`属性,当点击图片时,调用`toggleZoom`函数,并传递对应的图片ID作为参数。这样就可以实现点击图片放大或取消放大的功能了。

希望能帮到您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-26 02:57:04 | 显示全部楼层
FishC 发表于 2024-4-26 02:54
您的代码逻辑是正确的,点击图片时会调用`toggleZoom`函数来放大或取消放大图片。但是根据您提供的代码片段 ...

图片已经放大了,那怎么在点击图片,图片变原来的大小
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-26 02:57:24 | 显示全部楼层
maikehong 发表于 2024-04-26 02:57
图片已经放大了,那怎么在点击图片,图片变原来的大小


要实现点击放大的图片后再次点击回到原来大小的效果,可以在`toggleZoom`函数中添加逻辑判断。当图片已经放大时,点击图片就将其恢复为原始大小。

以下是修改后的代码示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>点击事件不生效</title>
  6.     <style>
  7.         /* 省略样式,保持不变 */

  8.         .modal {
  9.             display: none; /* 初始状态下隐藏弹窗 */
  10.             position: fixed;
  11.             z-index: 1;
  12.             left: 0;
  13.             top: 0;
  14.             width: 50%;
  15.             height: 50%;
  16.             overflow: auto; /* 以防图片尺寸大于屏幕尺寸时可以滚动 */
  17.             background-color: rgba(0, 0, 0, 0.9); /* 半透明黑色背景 */
  18.         }

  19.         .modal-content {
  20.             margin: auto;
  21.             display: block;
  22.             width: auto;
  23.             max-width: 80%; /* 设置最大宽度 */
  24.             max-height: 80vh; /* 设置最大高度为视口高度的80% */
  25.         }
  26.     </style>
  27. </head>
  28. <body>
  29.     <img id="myImg" src="path/to/your/image.jpg" onclick="toggleZoom('myImg')">

  30.     <!-- 弹窗 -->
  31.     <div id="myModal" class="modal">
  32.         <span class="close" onclick="toggleZoom('myImg')">&times;</span>
  33.         <img class="modal-content" id="img01">
  34.     </div>

  35.     <script>
  36.         var zoomed = false;

  37.         function toggleZoom(imgId) {
  38.             if (!zoomed) {
  39.                 // 如果图片未放大,则显示弹窗并放大图片
  40.                 document.getElementById('myModal').style.display = "block";
  41.                 document.getElementById("img01").src = document.getElementById(imgId).src;
  42.                 document.getElementById(imgId).style.transform = "scale(2)"; // 放大图片
  43.                 zoomed = true; // 设置放大状态为true
  44.             } else {
  45.                 // 如果图片已放大,则关闭弹窗并恢复原始大小
  46.                 document.getElementById('myModal').style.display = "none";
  47.                 document.getElementById(imgId).style.transform = "scale(1)"; // 恢复原始大小
  48.                 zoomed = false; // 设置放大状态为false
  49.             }
  50.         }
  51.     </script>
  52. </body>
  53. </html>
复制代码


在上例中,我修改了`toggleZoom`函数,在放大图片的时候使用CSS的`transform`属性将其缩放为2倍,并在取消放大时恢复为原始大小。在点击图片和关闭按钮时,都会调用`toggleZoom`函数来实现图片的放大和恢复。

希望能帮到您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-4 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表