原生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自定义button按钮的几种方法
Jun 11 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
jQuery中slidedown与slideup方法用法示例
Sep 16 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
Jul 19 Javascript
微信小程序表单验证功能完整实例
Dec 01 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
vue2.x数组劫持原理的实现
Apr 19 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
简单的自定义php模板引擎
2016/08/26 PHP
写的htc的数据表格
2007/01/20 Javascript
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
javascript preload&amp;lazy load
2010/05/13 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
python多线程同步实例教程
2019/08/11 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
Python中私有属性的定义方式
2020/03/05 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
毕业自荐信
2013/12/16 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
世界红十字日活动总结
2015/02/10 职场文书
求职自我推荐信
2015/03/24 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers