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、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
jQuery中的类名选择器(.class)用法简单示例
May 14 jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
jQuery实现每日秒杀商品倒计时功能
Sep 06 jQuery
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
jQuery实现简单日历效果
Jul 05 jQuery
jQuery实现推拉门效果
Oct 19 jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 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面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
asm.js使用示例代码
2013/11/28 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python求素数示例分享
2014/02/16 Python
python写入xml文件的方法
2015/05/08 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python opencv读mp4视频的实例
2018/12/07 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
幼儿园教师考核制度
2014/02/01 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
导游词之临安白水涧
2019/11/05 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸
全新239军机修复记
2022/04/05 无线电