JS插件-放大镜效果

本文介绍了如何使用JavaScript创建一个放大镜效果,适用于电商网站商品展示。主要包括三个主要部分:大图box、中图middle-box和小图small-box。当鼠标移到小图上时,中图显示对应的放大效果,并在鼠标移动时动态调整。代码实现中涉及到鼠标移入移出事件、遮罩层定位以及图片比例显示等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

放大镜插件

  • 先上效果图(同淘宝宝贝放大部分)
  • 总体可细分为三个div,右边大box,左上中box,左下小box
  • 鼠标移至small-lbox,相应的选项增加边框,middle-box也会改变

主要代码

  • 先从small-box开始,有鼠标移入、移出事件,移入事件跟随着middle-box中img的改变、相应的small-box加边框(所有的small-box先去除边框)
   var osmallbox = $("small-box");
   osmallimgs = osmallbox.getElementsByTagName("img");
   for (var i = 0; i < osmallimgs.length; i++) {
       osmallimgs[i].onmouseenter = function() {
           for (var j = 0; j < osmallimgs.length; j++) {
               osmallimgs[j].className = "";
           }
           this.className = "current";
           //修改中型图片、大型图片的SRC地址
           omiddleimg.src = "./imgs/middle" + this.src.slice(this.src.indexOf('-'));
           olargeimg.src = "./imgs/large" + this.src.slice(this.src.indexOf('-'));

       };
   }
  • middle-box关键步骤,鼠标移入、移出,移入事件跟随着遮罩层出现、big-box出现,遮罩层出现包括鼠标定位,上下左右边界限定
//鼠标进入middle-box,显示遮罩层和大型图片
   $("middle-box").onmouseenter = function() {
       $("large-box").style.display = "block";
       $("float").style.display = "block";
   }

   //鼠标离开middle-box,不显示遮罩层和大型图片
   $("middle-box").onmouseout = function() {
       $("large-box").style.display = "none";
       $("float").style.display = "none";
   }

   //添加鼠标移动事件
   $("middle-box").onmousemove = function(evt) {
       $("float").style.display = "block";
       var evt = evt || window.event;
       var l = $("box").offsetLeft;
       var t = $("box").offsetTop;
       var x = evt.clientX - $("float").offsetWidth / 2 - l;
       var y = evt.clientY - $("float").offsetHeight / 2 - t;
       if (x < 0) {
           x = 0;
       }
       if (y < 0) {
           y = 0;
       }
       if (x > $("middle-box").offsetWidth - $("float").offsetWidth) {
           x = $("middle-box").offsetWidth - $("float").offsetWidth;
       }
       if (y > $("middle-box").offsetHeight - $("float").offsetHeight) {
           y = $("middle-box").offsetHeight - $("float").offsetHeight;
       }
       $("float").style.left = x + "px";
       $("float").style.top = y + "px";
       //定义box-img显示比例
       var lx = x / ($("mask").offsetWidth - $("float").offsetWidth);
       var ly = y / ($("mask").offsetHeight - $("float").offsetHeight);
       $("large-img").style.left = -lx * ($("large-img").offsetWidth - $("large-box").offsetWidth) + "px";
       $("large-img").style.top = -ly * ($("large-img").offsetHeight - $("large-box").offsetHeight) + "px";
   }
  • big-box部分比较简单,只有当鼠标移入middle-box时才显示,但big-img的显示有个比例进行部分显示,具体代码参照上面倒数四行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安萌萌萌萌萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值