原生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 相关文章推荐
网络图片延迟加载实现代码 超越jquery控件
Mar 27 Javascript
如何使用jquery easyui创建标签组件
Nov 18 Javascript
JavaScript中的prototype原型学习指南
May 09 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
JS获取鼠标相对位置的方法
Sep 20 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
Feb 09 Javascript
node.js操作mysql简单实例
May 25 Javascript
在vue中获取token,并将token写进header的方法
Sep 26 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 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
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP代码优化技巧小结
2015/09/29 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
python妙用之编码的转换详解
2017/04/21 Python
Python实现图片识别加翻译功能
2019/12/26 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
标准化管理实施方案
2014/02/25 职场文书
文明城市标语
2014/06/16 职场文书
国际商务专业求职信
2014/07/15 职场文书
国际会计专业求职信
2014/08/04 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
Java中的随机数Random
2022/03/17 Java/Android