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平滑滚动到顶部插件使用详解
May 08 jQuery
简述jQuery Easyui一些用法
Aug 01 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
jQuery实现表格隔行换色
Sep 01 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
浅谈JS和jQuery的区别
Mar 27 jQuery
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
js/jQuery实现全选效果
Jun 17 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 断点续传实例详解
2017/11/11 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
javascript实现日历效果
2019/06/17 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
python中的set实现不重复的排序原理
2018/01/24 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
小学生家长评语集锦
2014/01/30 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
优秀公益广告词大全
2014/03/19 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
培训计划通知
2015/07/15 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技