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实现文章图片弹出放大效果
Apr 06 jQuery
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
jQuery异步提交表单实例
May 30 jQuery
基于jquery实现五星好评
Nov 18 jQuery
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
jQuery实现手风琴效果(蒙版)
Jan 11 jQuery
jquery实现进度条状态展示
Mar 26 jQuery
jQuery+ajax实现用户登录验证
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&amp;&amp;mysql)一
2006/10/09 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
vue-router单页面路由
2017/06/17 Javascript
react redux入门示例
2018/04/19 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
菊花转动的jquery加载动画效果
2018/08/19 jQuery
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
详解vue v-model
2020/08/31 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
Python发送Email方法实例
2014/08/21 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
小学教研工作总结2015
2015/05/13 职场文书
开场白怎么写
2015/06/01 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书