原生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 相关文章推荐
写的htc的数据表格
Jan 20 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
Javascript 6里的4个新语法
Aug 25 Javascript
轻松搞定js表单验证
Oct 13 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
使用angular-cli webpack创建多个包的方法
Oct 16 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
Sep 18 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用GD库生成高质量的缩略图片
2011/03/09 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python正则表达式完全指南
2017/05/25 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
模具专业推荐信
2013/10/30 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
列车长先进事迹材料
2014/01/25 职场文书
实习生求职自荐信
2014/02/07 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
2014年收银工作总结
2014/11/13 职场文书
年度考核个人总结
2015/03/06 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
交通事故案件代理词
2015/05/23 职场文书
体育教师研修感悟
2015/11/18 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server