原生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 JSON的解析方式分享
Apr 05 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
Oct 26 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
jQuery 追加元素的方法如append、prepend、before
Jan 16 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
Mar 13 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 Javascript
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
微信小程序异步处理详解
Nov 10 Javascript
微信小程序ibeacon三点定位详解
Oct 31 Javascript
js实现轮播图特效
May 28 Javascript
JavaScript 对象创建的3种方法
Nov 17 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去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
python读取浮点数和读取文本文件示例
2014/05/06 Python
python中正则表达式的使用详解
2014/10/17 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
Python单元测试与测试用例简析
2019/11/09 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
学生拾金不昧表扬信
2014/01/21 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
安全口号大全
2014/06/21 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
如何撰写创业策划书
2019/06/27 职场文书
Django框架中视图的用法
2022/06/10 Python