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实现全选、全不选以及单选功能
Mar 23 jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
js/jQuery实现全选效果
Jun 17 jQuery
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 jQuery
javascript/jquery实现点击触发事件的方法分析
Nov 11 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
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
利用node.js如何创建子进程详解
2017/12/09 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Python打包可执行文件的方法详解
2016/09/19 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
点球小游戏python脚本
2018/05/22 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
护士实习自我鉴定
2013/10/22 职场文书
绿色校园广播稿
2014/10/13 职场文书
运动会800米赞词
2015/07/22 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
详解JAVA的控制语句
2021/11/11 Java/Android
一文解答什么是MySQL的回表
2022/08/05 MySQL