原生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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
Oct 20 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
Dec 04 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
javascript定时器完整实例
Feb 10 Javascript
jquery+ajax请求且带返回值的代码
Aug 12 Javascript
javascript中undefined与null的区别
Aug 16 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
微信小程序  自定义创建详细介绍
Oct 27 Javascript
JS 验证码功能的三种实现方式
Nov 26 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里的JS打印函数
2006/10/09 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
网页javascript精华代码集
2007/01/24 Javascript
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
详解Python中的strftime()方法的使用
2015/05/22 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python 实现识别图片上的数字
2019/07/30 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
如何利用Python识别图片中的文字
2020/05/31 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
学术会议邀请函范文
2014/01/22 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
在职证明书模板
2015/06/15 职场文书
六五普法学习心得体会
2016/01/21 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js