jquery图片放大镜效果


Posted in jQuery onJune 23, 2017

昨天看一篇博文的时候,说到了这个效果,于是自己想试着写一个,没有使用插件,

基本的想法就是,左边是小图,右边对应大图,鼠标进去小图范围之后,获取他的坐标(x,y)然后计算

x/小图的宽度*大图得宽度/2

y/小图的高度*大图得高度/2

计算出来的两个结果即为大图得左右偏移距离

/2是为了让右边区域不会出现空白。

经过测试,ie7以上以及主流浏览器都可以用,代码如下:

<div class="wrap">
  <div class="small">
    <img src="1s.jpg">
    <div class="tool" id="tool"></div>
  </div>
  <div class="big"><img src="1.jpg"></div>
</div>

.wrap{overflow:hidden;margin:50px auto;}
.small{position:relative;float:left;width:214px;height:328px;}
 .tool{width:100px;height:100px;position:absolute;top:50px;left:100px;background:rgba(255,255,255,0.5);}
 .big{float:left;margin:0 40px;width:330px;overflow:hidden;height:328px;display:none;position:relative;}
.big img{position:absolute;width:650px;height:960px;}

主要的JS代码如下:

//不加蒙版放大镜
    $('.small').mousemove(function(e) {
      $(this).siblings('.big').show();
      //var e = event || window.event;
      var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
      //滚动条距离屏幕左边的宽度
      var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
      //滚动条距离屏幕上面的高度
      //e.pageX相对于文档左边的高度
      //e.pageY相对于文档上面的高度

      //e.clientX相对于屏幕左边的高度
      //e.clientY相对于屏幕上面的高度
      var xx = e.pageX || e.clientX + scrollX;//相对于文档左边的宽度
      var yy = e.pageY || e.clientY + scrollY;//相对于文档上面的高度
      //.offset().top元素相对于文档上面的位置
      //.offset().left元素相对于文档左面的位置
      var y=yy-$(this).offset().top;//鼠标相对于元素的x,y坐标
      var x=xx-$(this).offset().left;
      var width=$(this).width();
      var lwidth=$(this).siblings('.big').find('img').width();
      //按照大图与小图的比例来进行移动的
      var left=x/width*lwidth/2;
      var height=$(this).height();
      var lheight=$(this).siblings('.big').find('img').height();
      var top=y/height*lheight/2;
      $(this).siblings('.big').find('img').css({left:-left,top:-top});
      //console.log(x + '---' + y);
      //不加蒙版放大镜结束
      //蒙版跟着动
      var twidth=$(this).find('.tool').width();
      var theight=$(this).find('.tool').height();
      var tleft=x-twidth/2;
      var ttop=y-theight/2;
      if(tleft<0){
        tleft=0;
      }
      if(tleft>width-twidth){
        tleft=width-twidth;
      }
      if(ttop<0){
        ttop=0
      }
      if(ttop>height-theight){
        ttop=height-theight;
      }
      $(this).find('.tool').css({left:tleft,top:ttop});
    });

效果如下:

jquery图片放大镜效果

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

jQuery 相关文章推荐
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
jquery插件开发之选项卡制作详解
Aug 30 jQuery
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
webpack写jquery插件的环境配置
Dec 21 jQuery
基于jquery的on和click的区别详解
Jan 15 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
详解jquery和vue对比
Apr 16 jQuery
jQuery zTree树插件的使用教程
Aug 16 jQuery
jquery单击文字或图片内容放大并居中显示
Jun 23 #jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 #jQuery
详谈表单格式化插件jquery.serializeJSON
Jun 23 #jQuery
简单谈谈require模块化jquery和angular的问题
Jun 23 #jQuery
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 #jQuery
jQuery实现可拖动进度条实例代码
Jun 21 #jQuery
基于jquery日历价格、库存等设置插件
Jul 05 #jQuery
You might like
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
Python break语句详解
2014/03/11 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Pandas中resample方法详解
2019/07/02 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
公务员总结性个人自我评价
2013/12/05 职场文书
给校长的建议书600字
2014/05/15 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
党员作风建设整改方案
2014/10/27 职场文书
泰山导游词
2015/02/02 职场文书
实习班主任自我评价
2015/03/11 职场文书
军训新闻稿范文
2015/07/17 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript
Nginx 匹配方式
2022/05/15 Servers