原生JS实现简单放大镜效果


Posted in Javascript onFebruary 08, 2017

本文实例为大家分享了原生JS实现放大镜效果的具体代码,供大家参考,具体内容如下

<html>

 <head>
 <meta charset="UTF-8">
 <title></title>
 <style type="text/css">
 * {
 margin: 0;
 padding: 0;
 }
 img{
 vertical-align: top;
 }
 .fdj {
 width: 350px;
 height: 350px;
 position: relative;
 margin: 100px auto;
 border: 1px solid gainsboro;
 }
 .small {
 position: relative;
 }
 .small img {
 width: 350px;
 }
 .mask {
 width: 100px;
 height: 100px;
 background: rgba(255, 255, 0, 0.4);
 position: absolute;
 left: 0;
 top: 0;
 cursor: move;
 display: none;
 }
 .big {
 position: absolute;
 top: 0;
 left: 360px;
 width: 500px;
 height: 500px;
 border: 1px solid gainsboro;
 overflow: hidden;
 display: none;
 }
 .big img{
 position: absolute;
 left: 0;
 top: 0;
 }
 </style>
 </head>

 <body>
 <div class="fdj">
 <div class="small">
 <img src="http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" />
 <div class="mask"></div>
 </div>
 <div class="big">
 <img src="http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" />
 </div>
 </div>
 </body>
 <script type="text/javascript">
 var fdj = document.querySelector('.fdj') // 获得最大的盒子
 var small = document.querySelector('.small'); //获取小图片盒子
 var big = document.querySelector('.big'); //获取大图片盒子
 var bigs = big.children[0] //大图片 
 var smalls = small.children[0] //小图片
 var mask = small.children[1]; //遮罩

 //鼠标移入小图片盒子
 small.onmouseover = function() {
 //鼠标移入图片盒子将遮罩与大图片显示
 mask.style.display = 'block';
 big.style.display = ' block';
 };

 //鼠标移出小图片盒子
 small.onmouseout = function() {
 //鼠标移出小图片盒子将遮罩与大图片隐藏
 mask.style.display = 'none';
 big.style.display = 'none';
 };

 var x=0;
 var y=0;
 //鼠标在小图片上移动时
 small.onmousemove = function(ev) {
 var ev = event || window.event;
 //让鼠标在遮罩正中
 //鼠标X坐标与Y坐标
 x = ev.clientX -this.offsetParent.offsetLeft- mask.offsetWidth / 2 ; 
 y = ev.clientY -this.offsetParent.offsetTop- mask.offsetHeight / 2 ;
 //将遮罩限制在小图片盒子中

 if (x<0) {
 x=0;
 }else if(x>small.offsetWidth-mask.offsetWidth){
 x = small.offsetWidth-mask.offsetWidth;
 }

 if(y<0){
 y=0;
 }else if(y>small.offsetHeight-mask.offsetHeight){
 y= small.offsetHeight-mask.offsetHeight
 }
 mask.style.left = x + 'px';
 mask.style.top = y + 'px';

 //大图与小图的比例

 /*var scalX = bigs.offsetWidth/small.offsetWidth;
 var scalY = bigs.offsetHeight/small.offsetHeight;*/

 var scalX = x/(small.offsetWidth-mask.offsetWidth);
 var scalY = y/(small.offsetHeight-mask.offsetHeight);

 bigs.style.left = -(x*scalX)+'px';
 bigs.style.top = -(y*scalY)+'px';

 };

 </script>

</html>

效果图:(演示)

原生JS实现简单放大镜效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
jquery控制左右箭头滚动图片列表的实例
May 20 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
常用的javascript设计模式
Jan 11 Javascript
vue服务端渲染的实例代码
Aug 28 Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
js计算两个日期间的天数月的实例代码
Sep 20 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
Dec 12 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
JS原型和原型链原理与用法实例详解
Feb 05 Javascript
基于JavaScript实现本地图片预览
Feb 08 #Javascript
js 判断登录界面的账号密码是否为空
Feb 08 #Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 #Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 #Javascript
Bootstrap模态窗口源码解析
Feb 08 #Javascript
Bootstrap路径导航与分页学习使用
Feb 08 #Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 #Javascript
You might like
PHP的FTP学习(一)
2006/10/09 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
JavaScript 参考教程
2006/12/29 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
简单介绍Python中的decode()方法的使用
2015/05/18 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
详解python3百度指数抓取实例
2016/12/12 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
python批量图片处理简单示例
2019/08/06 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
四风问题个人对照检查剖析材料
2014/09/27 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
浅谈怎么给Python添加类型标注
2021/06/08 Python