侧边栏壁纸
博主头像
栗子 博主等级

行动起来,活在当下

  • 累计撰写 15 篇文章
  • 累计创建 11 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

图片滚轮缩放处理(代码片段)

albert_luo
2025-02-28 / 0 评论 / 3 点赞 / 18 阅读 / 0 字
温馨提示:
本文最后更新于2025-02-28,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

图片滚轮缩放功能实现:JS与CSS的完美结合

在现代Web开发中,图片的交互体验尤为重要。用户不仅希望看到清晰的图片,还希望能够通过简单的操作对图片进行放大、缩小等操作。本文将介绍如何通过JavaScript和CSS实现一个图片滚轮缩放的功能,并附上完整的代码片段。

功能概述

我们实现的功能包括:

  1. 图片点击放大:点击图片后,图片会在一个覆盖层中放大显示。

  2. 滚轮缩放:用户可以通过鼠标滚轮对放大后的图片进行缩放。

  3. 缩放比例显示:在缩放过程中,实时显示当前的缩放比例。

  4. 关闭按钮:用户可以通过点击关闭按钮退出放大模式。

代码实现

HTML结构

在HTML部分,我们只需要一个包含图片的容器即可。具体的覆盖层和放大后的图片结构将通过JavaScript动态生成。

<div id="infoCenterForIpo">
  <img src="your-image.jpg" alt="Sample Image">
</div>

CSS样式

CSS部分主要负责覆盖层、放大后的图片、关闭按钮以及缩放比例显示的样式。

/* 为 #infoCenterForIpo 下的图片添加样式 */
#infoCenterForIpo img {
    max-width: 100%;
    height: auto;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    cursor: pointer;
}

/* 图片悬停效果 */
#infoCenterForIpo img:hover {
    transform: scale(1.05);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}

/* 覆盖层样式 */
#overlay {
    display: flex;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.8);
    justify-content: center;
    align-items: center;
}

/* 放大后的图片样式 */
#overlay img {
    width: 68%;
    border-radius: 8px;
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.5);
}
#overlay img :hover{
   cursor: grab;
}
/* 关闭按钮样式 */
#close-btn {
    position: absolute;
    top: 100px;
    right: 203px;
    width: 50px;
    height: 50px;
    background-color: #ff0000;
    color: #ffffff;
    font-size: 35px;
    font-weight: bold;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
    transition: background-color 0.3s ease, transform 0.3s ease; /* 过渡效果 */
    z-index: 99999999;
}

/* 悬停效果 */
#close-btn:hover {
    background-color: #cc0000; /* 深红色 */
    transform: scale(1.1); /* 放大 */
}

/* 缩放百分比显示样式 */
#zoom-scale {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.7);
    color: #e5e3e3;
    padding: 10px 15px;
    border-radius: 4px;
    font-size: 16px;
    font-family: Arial, sans-serif;
    display: none; /* 默认隐藏 */
    transition: opacity 0.3s ease;
    z-index: 999999999999999;
}

/* 显示时的样式 */
#zoom-scale.visible {
    display: flex;
    justify-content: center;
    align-items: center;
}

JavaScript逻辑

JavaScript部分负责处理图片的点击事件、滚轮缩放事件以及关闭按钮的点击事件。

$(layero).on("click", "img", function () {
  //放大图片
  var imgSrc = $(this).attr("src");
  var thiOpen=layer.open({
    type: 1,
    title: false,
    closeBtn: 0,
    area: ['auto', 'auto'],
    content: `<div id="overlay">
                    <span id="close-btn">&times;</span>
                      <span id="zoom-scale"></span>
                    <img src="${imgSrc}" alt="Enlarged Image">
                </div>`
    ,success: function (layero) {
      var img = layero.find("img")[0];
      var zoomScaleElement = layero.find("#zoom-scale")[0];
      var scale = 1; // 初始缩放比例
      var timeoutId; // 用于隐藏缩放百分比的定时器
      // 显示缩放百分比
      function showZoomScale() {
        zoomScaleElement.textContent = `${Math.round(scale * 100)}%`;
        zoomScaleElement.classList.add("visible");
        // 清除之前的定时器
        if (timeoutId) clearTimeout(timeoutId);
        // 设置隐藏定时器
        timeoutId = setTimeout(function () {
          zoomScaleElement.classList.remove("visible");
        }, 1000); // 1 秒后隐藏
      }
      // 监听滚轮事件
      $(img).on("wheel", function (e) {
        e.preventDefault(); // 阻止默认滚动行为

        // 根据滚轮方向调整缩放比例
        if (e.originalEvent.deltaY < 0) {
          scale += 0.1; // 放大
        } else {
          scale -= 0.1; // 缩小
        }

        // 限制缩放范围
        scale = Math.min(Math.max(0.5, scale), 3);

        // 应用缩放
        img.style.transform = `scale(${scale})`;

        // 显示缩放百分比
        showZoomScale();
      });
    //监听关闭按钮
      $(layero).on("click", "#close-btn", function () {
      layer.close(thiOpen);
      })
    }
  });
});

功能效果

  1. 图片点击放大:点击图片后,图片会在覆盖层中居中显示,覆盖层的背景为半透明黑色。

  2. 滚轮缩放:用户可以通过鼠标滚轮对图片进行放大和缩小,缩放比例范围限制在50%到300%之间。

  3. 缩放比例显示:在缩放过程中,缩放比例会实时显示在图片的左上角,并在1秒后自动隐藏。

  4. 关闭按钮:点击右上角的关闭按钮,可以退出图片的放大模式。

总结

通过上述代码,我实现了一个简单但功能强大的图片滚轮缩放功能。该功能不仅提升了用户的交互体验,还通过CSS的过渡效果和JavaScript的事件处理,使得整个操作过程流畅自然。希望这篇文章能为你提供一些有用的参考,帮助你在自己的项目中实现类似的图片交互功能。

3

评论区