当前位置:首页 > jquery

jquery 放大镜

2026-02-03 14:47:21jquery

以下是实现 jQuery 放大镜效果的两种常见方法,适用于商品图片局部放大等场景:

基础实现方法

准备 HTML 结构,包含原图容器和放大镜显示区域:

<div class="container">
  <img src="small.jpg" class="small-img">
  <div class="zoom-lens"></div>
</div>
<div class="zoom-result"></div>

CSS 样式设置:

jquery 放大镜

.zoom-lens {
  position: absolute;
  width: 100px;
  height: 100px;
  background: rgba(255, 255, 255, 0.3);
  border: 1px solid #ccc;
  cursor: none;
  display: none;
}
.zoom-result {
  position: absolute;
  width: 400px;
  height: 400px;
  overflow: hidden;
  display: none;
  border: 1px solid #ddd;
}

jQuery 核心逻辑:

$(document).ready(function(){
  $(".container").on("mousemove", function(e){
    const lens = $(".zoom-lens");
    const result = $(".zoom-result");
    const smallImg = $(".small-img");

    // 计算镜头位置
    const x = e.pageX - $(this).offset().left - lens.width()/2;
    const y = e.pageY - $(this).offset().top - lens.height()/2;

    // 边界检查
    const maxX = $(this).width() - lens.width();
    const maxY = $(this).height() - lens.height();

    lens.css({
      left: Math.min(Math.max(0, x), maxX),
      top: Math.min(Math.max(0, y), maxY),
      display: "block"
    });

    // 计算放大比例
    const ratioX = result.width() / lens.width();
    const ratioY = result.height() / lens.height();

    // 设置放大区域背景
    result.css({
      "background-image": "url('large.jpg')",
      "background-size": smallImg.width() * ratioX + "px " + smallImg.height() * ratioY + "px",
      "background-position": -x * ratioX + "px " + -y * ratioY + "px",
      display: "block"
    });
  });

  $(".container").on("mouseleave", function(){
    $(".zoom-lens, .zoom-result").hide();
  });
});

使用插件简化实现

引入 jQuery Zoom 插件(需先加载 jQuery):

jquery 放大镜

<script src="https://cdn.jsdelivr.net/npm/jquery-zoom@1.7.21/jquery.zoom.min.js"></script>

初始化插件:

$('.small-img').zoom({
  url: 'large.jpg',  // 大图路径
  magnify: 2,       // 放大倍数
  on: 'hover'       // 触发方式
});

插件配置选项:

  • target:指定放大镜显示容器
  • touch:启用触摸屏支持(默认 true)
  • duration:动画持续时间(毫秒)
  • onZoomIn/onZoomOut:回调函数

注意事项

  1. 大图尺寸建议至少是原图的 2 倍以上以保证清晰度
  2. 移动端适配需要添加触摸事件支持
  3. 性能优化建议对大图进行预加载
  4. 复杂场景可考虑使用 WebGL 实现更流畅的放大效果

两种方法各有优势:基础实现更灵活可控,插件方案开发效率更高。实际选择应根据项目需求和性能要求决定。

标签: 放大镜jquery
分享给朋友:

相关文章

vue实现放大镜原理

vue实现放大镜原理

Vue 实现放大镜效果 放大镜效果常见于电商网站的商品展示,通过鼠标悬停或移动实现局部放大。以下是基于 Vue 的实现方法: 核心原理 布局结构:主容器包含小图区域和放大镜区域。 事件监听:…

jquery获取radio选中的值

jquery获取radio选中的值

获取radio选中的值 使用jQuery获取被选中的radio按钮的值可以通过以下几种方法实现: 方法1:使用:checked选择器 var selectedValue = $('input[…

jquery 滑块

jquery 滑块

jQuery 滑块实现方法 使用 jQuery 实现滑块功能可以通过多种方式完成,包括使用原生 jQuery 或结合插件(如 jQuery UI)。以下是几种常见实现方法: 使用 jQuery UI…

jquery获取

jquery获取

获取元素 使用jQuery选择器获取元素,通过CSS选择器或jQuery特定选择器定位目标元素。常见选择器包括ID选择器(#id)、类选择器(.class)、标签选择器(tag)等。示例: $('#…

jquery中

jquery中

jQuery 基础概念 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。其核心特点是“写得更少,做得更多”(Write L…

jquery 图片

jquery 图片

jQuery 图片操作 jQuery 提供了多种方法来操作图片,包括加载、显示、隐藏、调整尺寸等。以下是一些常见的图片操作方法: 动态加载图片 使用 attr() 方法可以动态修改图片的 src 属…