当我们在电商网站上购买商品时,经常会看到这样一种效果,当我们把鼠标放到我们浏览的商品图片上时,会出现类似放大镜一样的一定区域的放大效果,方便消费者观察商品。今天我对这一技术,进行简单实现,实现图片放大镜效果。
我在代码中进行了代码编写的思路的说明和详细的代码注释,方便读者,请看代码:

<!doctype html>
<html><head><meta charset="UTF-8"><title>Document</title><style type="text/css">*{margin:0px; padding:0px;}.small-box {width:300px;height:300px;margin-left:100px;margin-top:100px;border:1px #ccc solid;cursor:move;float:left;position:relative;}.small-box img {width:300px;height:300px;}.tool {width:150px;height:150px;background-color:gold;opacity:0.6;filter:alpha(opacity=60);position:absolute;left:0px;top:0px;display:none;}.tool.active {display:block;}.big-box {width:300px;height:300px;border:1px #ccc solid;overflow:hidden;float:left;margin-top:100px;position:relative;display:none;}.big-box.active {display:block;}.big-box img {width:600px;height:600px;position:absolute;}</style></head><body><div class="small-box" id="smallBox"><img src="img1.jpg"/><div class="tool" id="tool"></div></div><div class="big-box" id="bigBox"><img src="img1.jpg" id="bigImg" /></div><script>/*第一步:当页面加载完后,获取所要操作的节点对象。第二步:为smallBox添加一个鼠标浮动事件当鼠标浮动到smallBox可视区域的时候,显示出小黄盒子tool和右边的大盒子(小黄盒子的放大版)bigBox添加active为smallBox添加一个鼠标离开事件隐藏小黄盒子和右边的大盒子去掉active第三步:为smallBox添加一个鼠标移动事件小黄盒子tool要跟着鼠标的坐标移动右边的大盒子里的图片也跟着指定的比例移动*/var smallBox = document.getElementById("smallBox");//小盒子var tool = document.getElementById("tool");//小盒子中的黄色区域var bigBox = document.getElementById("bigBox");//大盒子var bigImg = document.getElementById("bigImg");//放大的图片//鼠标进入小盒子区域内,显示黄色区域和大盒子smallBox.onmouseenter = function(){tool.className = "tool active";bigBox.className = "big-box active";}//鼠标离开小盒子区域,不显示黄色区域和大盒子smallBox.onmouseleave = function(){tool.className = "tool";bigBox.className = "big-box";}//鼠标在小盒子内移动smallBox.onmousemove = function(e){var _e = window.event||e;//事件对象var x = _e.clientX-this.offsetLeft-tool.offsetWidth/2;//事件对象在小盒子内的横向偏移量var y = _e.clientY-this.offsetTop-tool.offsetHeight/2;//竖向偏移量if(x<0){x = 0;//当左偏移出小盒子时,设为0}if(y<0){y = 0;//当上偏移出小盒子时,设为0}if(x>this.offsetWidth-tool.offsetWidth){x = this.offsetWidth-tool.offsetWidth;//当右偏移出小盒子时,设为小盒子的宽度-黄色放大区域宽度}if(y>this.offsetHeight-tool.offsetHeight){y = this.offsetHeight-tool.offsetHeight;//当下偏移出小盒子时,设为小盒子的高度-黄色放大区域高度}tool.style.left = x + "px";//黄色放大区域距离小盒子左偏距tool.style.top = y + "px";//黄色放大区域距离小盒子上偏距bigImg.style.left = -x*2 + "px";//放大图片移动方向相反,偏移距离加倍bigImg.style.top = -y*2 + "px";}</script></body>
</html>

这里,我并没有对代码中css样式,javascript行为进行和html结构的分离,方便读者阅读和运行。
有读者可能考虑,获取事件对象的偏移距离时直接使用offsetX和offsetY属性,省去了计算,但是笔者在试验时,出现了异常,黄色放大区域并不能稳定的随着鼠标进行移动,笔者认为,当时用offsetX和offsetY时,执行onmousemove会不断地出发onmouseover,而onmouseover会产生事件传播,从而导致在获取offsetX时出现异常。最终,笔者采用上述代码中的方法,能够出现稳定的效果。读者可以自行运行代码,查看效果。这里附上笔者的效果图:

javascript实现图片放大镜效果相关推荐

  1. 【小5聊】纯javascript实现图片放大镜效果

    实现图片放大镜效果,其实就是一个比例放大的效果 以下通过纯javascript方式对图片进行等比例放大,等比倍数和出界判断可自行实现 文章后面会附上全部代码 放大镜效果  1. 放大镜组成 1)目标图 ...

  2. Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果

    Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ...

  3. php 放大镜,图片放大镜效果实战总结

    摘要:本次实战主要完成了图片放大镜的效果,通过定义原始图片,放大镜,放大后的图片,然后设置放大后的图片为原始图片的3倍,通过鼠标移上显示放大后的图片,并通过位移计算当前放大镜的位置,设置放大后图片的偏 ...

  4. 13款jQuery图片放大镜效果代码

    jQuery商城网站商品放大镜查看效果代码 jquery图片放大镜效果制作变焦镜头图片放大查看代码 jQuery鼠标滑过图片放大镜效果_淘宝图片放大镜代码 jquery jqzoom仿京东商城商品详细 ...

  5. 【JavaScript】网页放大镜效果案例

    [JavaScript]网页放大镜效果案例 加深对e.pageX,e.pageY,offsetLeft,offsetTop,offsetWidth,offsetHeight的理解和应用 鼠标事件mou ...

  6. jquery图片放大效果,鼠标经过图片时局部放大,类似京东图片放大镜效果

    原文:jquery图片放大效果,鼠标经过图片时局部放大,类似京东图片放大镜效果 源代码下载地址:http://www.zuidaima.com/share/1746784990055424.htm 1 ...

  7. 使用jQuery实现图片放大镜效果

    使用jQuery实现图片放大镜效果 在淘宝上购物时,经常可以看到图片放大镜效果,如下图所示: 下面给出上述效果的jQuery实现代码,一切尽在代码注释中: <!DOCTYPE html> ...

  8. Jquery图片放大镜效果

    介绍一个十分好用的JQUERY图片放大镜插件,在很多电子商务网站中,有时在看小图时,往往想再看这个货品的大图, 传统的另外打开一张大图的话,不大COOL,所以找到了这个插件, 插件下载地址: http ...

  9. js实现图片放大镜效果

    效果图 代码实现过程 html部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

最新文章

  1. Nat. Mach. Intell. | 人工智能的透明度和可重复性
  2. 劳动节特别活动,钉钉、支付宝合种,2-4天领证,限量9个名额
  3. nginx php返回500错误,nginx环境thinkphp,500错误
  4. DTCC 2020 | 阿里云吉剑南:在线分析进入Fast Data时代的关键技术解读
  5. (转) iPhone UI 开发的几点建议
  6. 什么时候用到全排列_初学讲义之高中数学二十一:排列组合和二项式定理
  7. arcgis人口空间化_数据福利|全球人口密度数据汇总与共享
  8. 大规模业务技术架构设计与战术(架构师必看)
  9. C语言练习,求x的y次方的代码
  10. ARM架构——面试了菊厂,中兴,MTK,鼎桥,总结了ARM Cortex-M3中断
  11. 获取某一天的开始时间
  12. video视频播放中trank标签字幕显示问题
  13. Windows实例通过IIS如何搭建多个FTP站点
  14. 关于2022虎符pwn mva解决jmp rax无法反汇编的这么个事情
  15. C# 01.04 占位符
  16. 微博推荐算法学习(Weibo Recommend Algolrithm)
  17. TSN(时间敏感网络)纯干货分享
  18. 多线程编程模式之Single Threaded Execution 模式
  19. 描述并简要比较TCP/IP协议体系及0SI/RM协议体系
  20. Android 曝光采集(商品view曝光量的统计)

热门文章

  1. python科学计算库-数值计算库与科学计算库
  2. android guide 中文,Android API Guide:Toast 中文翻译
  3. java回合制武侠手游_‎App Store 上的“群侠传-怀旧开放武侠RPG回合制手游”
  4. 计算机主机的奥秘,揭秘网吧电脑为何流畅的奥秘
  5. amd860k能装黑苹果吗_可以黑苹果,性能比同价位的GTX1650强,RX580 2048SP不香吗?...
  6. Redis的三个框架:Jedis,Redisson,Lettuce
  7. 关于datetime 比较大小失效的问题
  8. 调试WebApi的一些方法
  9. 第二阶段冲刺 每日站立会议 1/4
  10. SpringMVC_04 拦截器 【拦截器的编程步骤】【session复习?】