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


Posted in Javascript onFebruary 07, 2018

本文实例讲述了原生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 相关文章推荐
js 纯数字不重复排列的另类方法
Jul 17 Javascript
javascript代码加载优化方法
Jan 30 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
Feb 24 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 Javascript
jQuery的事件预绑定
Dec 05 Javascript
微信小程序 http请求的session管理
Jun 07 Javascript
angular5 httpclient的示例实战
Mar 12 Javascript
用Axios Element实现全局的请求loading的方法
Mar 15 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
13 个npm 快速开发技巧(推荐)
Jul 04 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 #Javascript
Vue Element使用icon图标教程详解(第三方)
Feb 07 #Javascript
Vue.set()实现数据动态响应的方法
Feb 07 #Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
Feb 07 #Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 #Javascript
vue进行图片的预加载watch用法实例讲解
Feb 07 #Javascript
Angular浏览器插件Batarang介绍及使用
Feb 07 #Javascript
You might like
php array_intersect()函数使用代码
2009/01/14 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php 归并排序 数组交集
2011/05/10 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
js创建对象的方式总结
2015/01/10 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
小程序实现密码输入框
2020/11/16 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Python变量和字符串详解
2017/04/29 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
使用Python读取大文件的方法
2018/02/11 Python
python 删除非空文件夹的实例
2018/04/26 Python
python实现logistic分类算法代码
2020/02/28 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
超市实习总结自我鉴定
2013/09/19 职场文书
汽车驾驶求职信
2013/10/25 职场文书
给分销商的致歉信
2014/01/14 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
一月红领巾广播稿
2014/02/11 职场文书
大型演出策划方案
2014/05/28 职场文书
买房子个人收入证明
2014/10/12 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
勤俭节约主题班会
2015/08/13 职场文书
责任书格式
2019/04/18 职场文书