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插件Echarts实现的渐变色柱状图
Mar 23 jQuery
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
详解jquery选择器的原理
Aug 01 jQuery
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
jQuery插件实现非常实用的tab栏切换功能【案例】
Feb 18 jQuery
jquery 时间戳转日期过程详解
Oct 12 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
jquery自定义组件实例详解
Dec 31 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
PHP4之COOKIE支持详解
2006/10/09 PHP
php在线生成ico文件的代码
2007/10/09 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
浅谈PHP的反射API
2017/02/26 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
Tornado 多进程实现分析详解
2018/01/12 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
Python中的Django基本命令实例详解
2018/07/15 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
团委副书记工作总结
2015/08/14 职场文书
导游词之日本富士山
2020/01/06 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
Python基础知识学习之类的继承
2021/05/31 Python
详解NodeJS模块化
2021/06/15 NodeJs
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电