原生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 cookie插件代码类
May 26 Javascript
JavaScript 设计模式之组合模式解析
Apr 09 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
Jun 08 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
Dec 11 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
Feb 27 Javascript
全面解析vue中的数据双向绑定
May 10 Javascript
微信分享调用jssdk实例
Jun 08 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
php str_pad 函数用法简介
2009/07/11 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php数组合并的二种方法
2014/03/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
koa-router源码学习小结
2018/09/07 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
Python下使用Psyco模块优化运行速度
2015/04/05 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
大学生创业计划书的格式要求
2013/12/29 职场文书
入股合作协议书
2014/10/12 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
Python Pandas 删除列操作
2022/03/16 Python