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插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
jQuery中map函数的两种方式
Apr 07 jQuery
jQuery实现点击关注和取消功能
Jul 03 jQuery
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
jquery-ui 进度条功能示例【测试可用】
Jul 25 jQuery
jquery 时间戳转日期过程详解
Oct 12 jQuery
详解jQuery中的prop()使用方法
Jan 05 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
jQuery实现日历效果
Sep 11 jQuery
jQuery实现电梯导航模块
Dec 22 jQuery
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 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中使用灵巧的体系结构
2006/10/09 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
php如何获取Http请求
2020/04/30 PHP
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python常用知识点汇总
2016/05/08 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
教师学习培训邀请函
2014/02/04 职场文书
优秀员工评优方案
2014/06/13 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
自主招生专家推荐信
2015/03/26 职场文书
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL