原生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 相关文章推荐
JavaScript对IE操作的经典代码(推荐)
Mar 10 Javascript
javascript白色简洁计算器
May 04 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
原生js的RSA和AES加密解密算法
Oct 08 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
Vue实现搜索结果高亮显示关键字
May 28 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
vue实现标签云效果的方法详解
Aug 28 Javascript
js 对象使用的小技巧实例分析
Nov 08 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
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
js 提交和设置表单的值
2008/12/19 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python机器学习之神经网络(一)
2017/12/20 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
python中的yield from语法快速学习
2020/11/06 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
.net工程师笔试题
2012/06/09 面试题
大一自我鉴定范文
2013/12/27 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
童年读书笔记
2015/06/26 职场文书
暑期家教宣传单
2015/07/14 职场文书
python b站视频下载的五种版本
2021/05/27 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
人民币符号
2022/02/17 杂记
Python采集壁纸并实现炫轮播
2022/04/30 Python