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实现Select下拉列表进行状态选择功能
Mar 30 jQuery
jquery与js实现全选功能的区别
Jun 11 jQuery
jQuery UI Draggable + Sortable 结合使用(实例讲解)
Sep 07 jQuery
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
使用jQuery实现掷骰子游戏
Oct 24 jQuery
jquery实现简单拖拽效果
Jul 20 jQuery
jQuery实现朋友圈查看图片
Sep 11 jQuery
jquery实现拖拽添加元素功能
Dec 01 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无限级分类方法及代码
2013/06/21 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
图片自动更新(说明)
2006/10/02 Javascript
javascript函数库-集合框架
2007/04/27 Javascript
javascript innerText和innerHtml应用
2010/01/28 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
jquery仿微信聊天界面
2017/05/06 jQuery
this在vue和小程序中的使用详解
2019/01/28 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
python基础教程之字典操作详解
2014/03/25 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
Django 内置权限扩展案例详解
2019/03/04 Python
Python变量访问权限控制详解
2019/06/29 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
自我介绍演讲稿
2014/01/15 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js