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 22 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
jQuery实现拖动效果的实例代码
Jun 25 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
JQuery获得内容和属性方法解析
May 30 jQuery
jquery实现简易验证插件封装
Sep 13 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数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
删除重复数据的算法
2006/11/23 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
scrapy爬虫完整实例
2018/01/25 Python
python合并同类型excel表格的方法
2018/04/01 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python实现FTP循环上传文件
2020/03/20 Python
Python3.9新特性详解
2020/10/10 Python
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
酒店应聘自荐信
2013/11/09 职场文书
业务部经理岗位职责
2014/01/04 职场文书
女方回门宴答谢词
2014/01/14 职场文书
社团招新宣传语
2015/07/13 职场文书
python基础之错误和异常处理
2021/10/24 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers