原生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 相关文章推荐
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
实现无刷新联动例子汇总
May 20 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
Jun 22 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
JS中Object对象的原型概念基础
Jan 29 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
Sep 23 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中显示格式化的用户输入
2006/10/09 PHP
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
JavaScript实现短暂提示框功能
2018/04/04 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
玩转python爬虫之正则表达式
2016/02/17 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
骨干教师培训方案
2014/05/06 职场文书
学校三节实施方案
2014/06/09 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电