jQuery实现图片局部放大镜效果

首先,我们需要明确几个概念:放大镜效果,鼠标移动事件以及坐标计算。

放大镜效果指的是鼠标悬停在图片上时,在某一区域内看到放大后的图片效果。鼠标移动事件指的是鼠标从一个点移动到另一个点的事件,坐标计算则是指根据鼠标位置计算图片区域的位置和大小。

具体实现步骤如下:

  1. 引入jQuery库,并在HTML文档中添加一个div,用于展示放大后的图片效果。
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<div class="zoom"></div>
  1. 为图片添加鼠标悬停事件,并获取鼠标悬停时的位置。
<img src="image.png" alt="product" class="product-img">

<script>
$(".product-img").hover(function(event) {
  // 获取鼠标悬停位置
  var x = event.pageX - $(this).offset().left;
  var y = event.pageY - $(this).offset().top;
});
</script>
  1. 根据鼠标位置计算放大镜效果的位置和大小,并显示放大后的图片。
<!-- 放大镜效果容器 -->
<div class="zoom">
  <img src="image-large.png" alt="product">
</div>

<script>
$(".product-img").hover(function(event) {
  // 获取鼠标悬停位置
  var x = event.pageX - $(this).offset().left;
  var y = event.pageY - $(this).offset().top;

  // 计算放大镜效果的位置和大小
  var zoom_w = $(".zoom").width() / 2;
  var zoom_h = $(".zoom").height() / 2;
  var img_w = $(".product-img").width();
  var img_h = $(".product-img").height();
  var img_x = (img_w - zoom_w) / img_w * x;
  var img_y = (img_h - zoom_h) / img_h * y;

  // 设置放大镜效果位置和大小
  $(".zoom").css({
    left: x - zoom_w,
    top: y - zoom_h,
    backgroundPosition: -img_x + "px " + -img_y + "px"
  });

  // 显示放大后的图片
  $(".zoom").show();
}, function() {
  // 鼠标离开时隐藏放大镜效果
  $(".zoom").hide();
});
</script>

这样就实现了图片局部放大镜效果的功能。以下是两个示例说明:

示例1:用不同大小的图片实现局部放大

在HTML文档中添加两个图片,一个原图大小为200x200,另一个放大后的图片大小为400x400。然后在JavaScript代码中添加判断,当鼠标位置在原图的左半边时,显示原图,右半边时,显示放大后的图片。

<div>
  <img src="image.png" alt="product" class="product-img">
  <img src="image-large.png" alt="product" class="product-img-large" style="display:none">
  <div class="zoom"></div>
</div>

<script>
$(".product-img").hover(function(event) {
  var x = event.pageX - $(this).offset().left;
  var y = event.pageY - $(this).offset().top;

  var img_w = $(".product-img").width();
  if(x < img_w / 2) {
    $(".product-img").css("display", "block");
    $(".product-img-large").css("display", "none");
  } else {
    $(".product-img").css("display", "none");
    $(".product-img-large").css("display", "block");

    var zoom_w = $(".zoom").width() / 2;
    var zoom_h = $(".zoom").height() / 2;
    var img_w = $(".product-img-large").width();
    var img_h = $(".product-img-large").height();
    var img_x = (img_w - zoom_w) / img_w * x;
    var img_y = (img_h - zoom_h) / img_h * y;

    $(".zoom").css({
      left: x - zoom_w,
      top: y - zoom_h,
      backgroundPosition: -img_x + "px " + -img_y + "px"
    });
  }

  $(".zoom").show();
}, function() {
  $(".product-img").css("display", "block");
  $(".product-img-large").css("display", "none");
  $(".zoom").hide();
});
</script>

示例2:实现多张图片的局部放大

在HTML文档中添加多张图片,并将放大镜效果容器的class改为id,为每个图片添加一个data-zoom属性,用于指定对应的放大后的图片。

<div>
  <img src="image-1.png" alt="product" class="product-img" data-zoom="image-1-large.png">
  <img src="image-2.png" alt="product" class="product-img" data-zoom="image-2-large.png">
  <img src="image-3.png" alt="product" class="product-img" data-zoom="image-3-large.png">
  <div id="zoom"></div>
</div>

<script>
$(".product-img").hover(function(event) {
  var x = event.pageX - $(this).offset().left;
  var y = event.pageY - $(this).offset().top;

  var zoom_w = $("#zoom").width() / 2;
  var zoom_h = $("#zoom").height() / 2;
  var img_w = $(this).width();
  var img_h = $(this).height();
  var img_x = (img_w - zoom_w) / img_w * x;
  var img_y = (img_h - zoom_h) / img_h * y;

  $("#zoom").css({
    left: x - zoom_w,
    top: y - zoom_h,
    background: "url("+$(this).data("zoom")+") no-repeat -"+img_x+"px -"+img_y+"px"
  });

  $("#zoom").show();
}, function() {
  $("#zoom").hide();
});
</script>

这样就可以实现多张图片的局部放大效果了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现图片局部放大镜效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js实现按钮颜色渐变动画效果

    以下是关于JS实现按钮颜色渐变动画效果的完整攻略,包含实现方法以及两条示例说明。 实现方法 实现按钮颜色渐变动画效果的方法有很多种,这里给出一种基于JS和CSS的实现方法,具体步骤如下: 声明一个按钮元素,例如以下代码: html <button id=”myButton”>点击按钮</button> 在CSS中为这个按钮添加渐变的背…

    css 2023年6月9日
    00
  • 使用CSS3的appearance属性改变任何元素的浏览器默认风格

    使用CSS3的appearance属性可以改变任何元素的浏览器默认风格。这个属性可以用来修改一些标准控件的样式,或者改变一些HTML元素的默认外观,从而打造独特的用户体验。 修改标准控件的样式 如果想要修改标准控件的样式,可以使用appearance属性。下面以修改按钮的样式为例: button { appearance: none; background-…

    css 2023年6月10日
    00
  • css中替换元素和不可替换元素及显示元素详细探讨

    CSS中替换元素和不可替换元素及显示元素详细探讨 在CSS中,元素根据其类型和角色不同,可以分为替换元素和不可替换元素。此外,CSS中的元素还可以进一步分类为显示元素和不可见元素。下面对这些元素类型逐一进行详细探讨。 替换元素 替换元素是指其内容不受CSS样式影响,它们的内容通常是由其本身决定的,比如图片、视频、音频等。由于替换元素的内容不受CSS样式影响,…

    css 2023年6月10日
    00
  • CSS DIV制作梯形状的不规则网站导航

    针对如何使用CSS制作梯形状的不规则网站导航,我将提供以下完整攻略: 1. 创建容器 首先,我们需要创建一个容器,以便实现网站导航的布局。在HTML文件中添加一个DIV元素,设置class属性为“nav-container”。 <div class="nav-container"> <!– 网站导航元素放置在这里 –…

    css 2023年6月10日
    00
  • 五款漂亮的纯CSS3动画按钮的实例教程

    这篇教程是关于如何使用纯CSS3制作漂亮动画按钮的指南。下面我们来逐步讲解制作五款简单而优美的动画按钮。 实例1:花式按钮 首先,我们需要在一个div容器中创建一个按钮,并使用CSS样式将其设置为圆形,如下所示: .button { display: flex; justify-content: center; align-items: center; wi…

    css 2023年6月10日
    00
  • css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局

    下面是详细的攻略。 首先,我们需要使用CSS3的border-radius属性来实现将正方形图片显示为圆形图片布局。具体步骤如下: HTML代码中插入一个<div>元素作为容器,并在其中插入一个<img>元素: “`html “2. 在CSS代码中,设置图片的样式为圆形,并将 `容器设置为透明: “`css .image-con…

    css 2023年6月10日
    00
  • css中id和class的定义格式、使用技巧及选择

    下面来详细讲解“CSS中id和class的定义格式、使用技巧及选择”的攻略。 CSS中定义id和class 在CSS中,我们可以通过id和class来定义样式。 id的定义格式 id的定义格式为 #id,其中id为自定义名称,如: #myId { /* 样式代码 */ } class的定义格式 class的定义格式为 .class,其中class为自定义名称…

    css 2023年6月10日
    00
  • 用!important解决IE和Mozilla的布局差别

    当我们在编写 CSS 样式的时候,有时会发现页面在不同浏览器中显示效果不一致。这时我们可以使用 !important 来解决这种问题。 !important 是 CSS 中一种很常用的机制,用于标记一个属性为重要的,后面的 CSS 代码将不会覆盖该属性的设置。在 IE 浏览器和 Mozilla 浏览器中,如果我们发现样式在某个浏览器中没有生效,可以尝试在该样…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部