原生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 相关文章推荐
收藏一些不常用,但是有用的代码
Mar 12 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
图片Slider 带左右按钮的js示例
Aug 30 Javascript
jQuery制作拼图小游戏
Jan 12 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
AngularJS ng-bind 指令简单实现
Jul 30 Javascript
js实现产品缩略图效果
Mar 10 Javascript
angular实现IM聊天图片发送实例
May 08 Javascript
微信小程序实现滑动删除效果
May 19 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
详解微信小程序获取当前时间及日期的方法
Apr 28 Javascript
Vue简单实现原理详解
May 07 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
收音机指标测试方法及仪器
2021/03/01 无线电
PHP 学习路线与时间表
2010/02/21 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
python列表的逆序遍历实现
2020/04/20 Python
python空元组在all中返回结果详解
2020/12/15 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
经理管理专业毕业自荐书范文
2014/02/12 职场文书
上班看电影检讨书
2014/02/12 职场文书
食品业务员岗位职责
2014/03/18 职场文书
城市创卫标语
2014/06/17 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
mysql insert 存在即不插入语法说明
2022/03/25 MySQL