原生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 相关文章推荐
juqery 学习之五 文档处理 插入
Feb 11 Javascript
使用javascript提交form表单方法汇总
Jun 25 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
复杂的javascript窗口分帧解析
Feb 19 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 Javascript
微信小程序实现无限滚动列表
May 29 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
js实现图片推拉门效果代码实例
May 18 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 array_search() 函数使用
2010/04/13 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
jquery JSON的解析方式
2009/07/25 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
教你安装python Django(图文)
2013/11/04 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
软件测试工程师笔试题带答案
2015/03/27 面试题
夜大自我鉴定
2013/10/31 职场文书
质检的岗位职责
2013/11/17 职场文书
创业计划书如何吸引他人眼球
2014/01/10 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
环卫工人慰问信
2015/02/15 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python