原生JavaScript实现的简单放大镜效果示例

 更新时间:2018年02月07日 14:36:33   转载 作者:karenYin0828  
这篇文章主要介绍了原生JavaScript实现的简单放大镜效果,涉及javascript事件响应及页面元素属性动态操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了原生JavaScript实现的简单放大镜效果。分享给大家供大家参考,具体如下:

原理: 其实所谓的放大就是准备两张一样的图片,除大小不一样。鼠标移动到不同位置,将会显示大图片对应的图片内容。

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>放大镜效果</title>
</head>
<body>
 <div id="wrap" style="position: relative;width: 900px;margin: 0 auto;text-align: center;">
  <div id="smallImg" style="width: 400px;height: 400px; position: relative;z-index: 1;">
   <img src="small.jpg" style="width: 400px;height: 400px;"/>
   <span id="filter" style="width: 200px;height: 200px;background-color: blue;opacity: 0.1;position: absolute;top: 0;left: 0; z-index: 2;cursor: move;display: none;">
   <span>
  </div>
  <div id="bigImg" style="width: 400px;height: 400px;overflow: hidden;position: absolute;right: 0px;top: 0;display: none;">
   <img src="large.jpg" style="width: 800px;height:800px; position: absolute;left: 0;top: 0;">
  </div>
 </div>
 <script type="text/javascript">
  var filter = document.getElementById('filter');
  var smallImg = document.getElementById('smallImg');
  var bigImg = document.getElementById('bigImg');
  var wrap = document.getElementById('wrap');
  var largeImgs = bigImg.getElementsByTagName('img')[0];
  smallImg.onmouseover = function(){
   bigImg.style.display = "inline-block";
   filter.style.display = "inline-block";
  }
  smallImg.onmousemove = function(event){
   var event = event || window.event;
   var mouseleft = event.clientX - wrap.offsetLeft;
   var mousetop = event.clientY - wrap.offsetTop;
   var left = mouseleft<smallImg.offsetWidth/4?0:mouseleft>smallImg.offsetWidth*3/4?smallImg.offsetWidth/2:(mouseleft - filter.offsetWidth/2);
   var top = mousetop<smallImg.offsetHeight/4?0:mousetop>smallImg.offsetHeight*3/4?smallImg.offsetHeight/2:(mousetop - filter.offsetWidth/2);
   filter.style.left = left + "px";
   filter.style.top = top +"px";
   largeImgs.style.left = "-" + left*bigImg.offsetWidth/smallImg.offsetWidth + "px";
   largeImgs.style.top = "-" + top*bigImg.offsetHeight/smallImg.offsetHeight + "px";
  }
  smallImg.onmouseout = function(){
   bigImg.style.display = "none";
   filter.style.display = "none";
  }
 </script>
</body>
</html>

运行效果:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript图片操作技巧大全》、《JavaScript图形绘制技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • 实现点击列表弹出列表索引的两种方式

    实现点击列表弹出列表索引的两种方式

    使用利用事件冒泡委托给列表的父节点去处理的方式第二种方式就是使用闭包了,感兴趣的你可以参考下本文,或许对你学习js有所帮助
    2013-03-03
  • 利用javascript判断文件是否存在

    利用javascript判断文件是否存在

    本篇文章主要介绍了利用javascript判断文件是否存在的方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • javascript中通过arguments参数伪装方法重载

    javascript中通过arguments参数伪装方法重载

    面向对象的高级语言中,都有方法的重载,在js中可以通过arguments这个参数来伪装成函数重载,具体如下
    2014-10-10
  • JavaScript实现基于十进制的四舍五入实例

    JavaScript实现基于十进制的四舍五入实例

    这篇文章主要介绍了JavaScript实现基于十进制的四舍五入的方法,实例分析了javascript针对数值判断与相关运算技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 用js写的一个路由(简单实例)

    用js写的一个路由(简单实例)

    下面小编就为大家带来一篇用js写的一个路由(简单实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Typescript3.9 常用新特性一览(推荐)

    Typescript3.9 常用新特性一览(推荐)

    这篇文章主要介绍了Typescript3.9 常用新特性一览,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 最佳的JavaScript错误处理实践

    最佳的JavaScript错误处理实践

    在JavaScript中遇到处理错误很让人头疼,这篇文章整理了JavaScript错误处理实践,有需要的小伙伴们可以参考。
    2016-07-07
  • react高阶组件经典应用之权限控制详解

    react高阶组件经典应用之权限控制详解

    在React中,高阶组件是重用组件逻辑的一项高级技术。下面这篇文章主要给大家介绍了关于react高阶组件经典应用之权限控制的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • JS实现获取剪贴板内容的方法

    JS实现获取剪贴板内容的方法

    这篇文章主要介绍了JS实现获取剪贴板内容的方法,涉及javascript基于clipboardData操作剪贴板的相关技巧,需要的朋友可以参考下
    2016-06-06
  • 微信小程序switch开关选择器使用详解

    微信小程序switch开关选择器使用详解

    这篇文章主要为大家详细介绍了微信小程序switch开关选择器的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论