js自制图片放大镜功能


Posted in Javascript onJanuary 24, 2017

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

注释:
small img size:600x400
big img size:1200x800

原理:
1、大图是小图的 2倍整
2、大图以小图片中心点为中心
      a.transform : translate(-50%,-50%)
      b.(rate-0.5)*50%
      c.clip : rect(t,r,b,l) 以小图边界为边界
3、rect必须有absolute
4、获取鼠标在图片中的位置
     a.获取鼠标位置 XY
     b.获取图片位置、宽度、高度
             i.得到鼠标在图片的百分比位置
             ii.将百分比位置应用于大图 left,top 

问题:
居中理解太差:
          absolute ,left ,top,right,bottom,margin
放大缩小问题:
           起初: transform: scale() 缩放
           利用 transition 过渡
                 结果,采用这种方法会使得鼠标移动时很卡顿
                       可能原因:每次hover 都会触发 transition事件
           解决方法:采用了 Animate 动画来实现缩放 

细节:
以 onmouse 事件 e 动态获得 e.pageX 和 e.pageY
以 $().offset().top /left 获取图片位置
以 $().width() /height() 获取图片宽高
      在错误的操作中也忘了获取 class 的方法
           $().attr("class")
           $().prop("class")
                    event.traget.className 

如果要实现 hover出现 透明的块状就在外部 opacity:0.5; 设置z-index就可以了。

<html>
 <head>
  <meta charset="UTF-8">
  <title>WEBGOD</title>
  <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script src="js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>
  <style type="text/css">
   #warpper{
    margin: 0 auto;
    padding: 0;
    position: relative;
    z-index: 1;
    width: 600px;
    height: 400px;
   }
   .small{
    text-align: center;
   }
   .big{
    display: none;
    clip: rect(200px,900px,600px,300px);
    position: absolute;
    width: 1200px;
    height: 800px;
    top: 50%;
    left:50%;
    transform: translate(-50%,-50%);
   }
   .big img{
    position: absolute;
    width: 600px;
    height: auto;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
   }
  </style>
 </head>
 <body>
   
  <div id="warpper">
   <div class="small">
    <img src="img/small_19.jpg"/>
   </div>
   <div class="big">
    <img src="img/img_19.jpg"/>
   </div>
  </div>
  <script type="text/javascript">
   $(function(){
    var x,y,left,top,width,height,imgWidth,imgHeight,rateX,rateY;
    $("#warpper").hover(function(){
     $(".big").css("display","block");
     $(".big img").animate({"width":"1200px"},500);
    },function(){
     $(".big img").animate({"width":"600px"},1);
     $(".big").css("display","none");
    })
    $("#warpper").on("mousemove",function(e){
     x = e.pageX;
     y = e.pageY;
     top = $(".small img").offset().top;
     left = $(".small img").offset().left;
     width = $(".small img").width();
     height = $(".small img").height();
     //
     imgWidth = $(".big img").width();
     imgHeight = $(".big img").height();
     rateX = (left+width-x)/width;
     rateY = (top+height-y)/height;
     if(rateX>0&&rateY>0&&rateX<=1&&rateY<=1){
      $(".big img").css("left",(rateX-0.5)*50+"%");
      $(".big img").css("top",(rateY-0.5)*50+"%");
     }
    })
   })
  </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
根据分辩率调用不同的CSS.
Jan 08 Javascript
不能再简单的无闪刷新验证码原理很简单
Nov 05 Javascript
使用js操作cookie的一点小收获分享
Sep 03 Javascript
jquery实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
Node.js的包详细介绍
Jan 14 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
JavaScript中constructor()方法的使用简介
Jun 05 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
详解vue-cli脚手架中webpack配置方法
Aug 22 Javascript
JS相册图片抖动放大展示效果的示例代码
Jan 29 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
Jan 24 #Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 #Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 #Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 #Javascript
Jquery树插件zTree实现菜单树
Jan 24 #Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 #Javascript
树结构之JavaScript
Jan 24 #Javascript
You might like
FCKeditor添加自定义按钮
2008/03/27 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
财务经理的岗位职责
2013/12/17 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
摄影助理岗位职责
2014/02/07 职场文书
房屋过户委托书范本
2014/10/07 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
安全生产奖惩制度
2015/08/06 职场文书
关于开学的感想
2015/08/10 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书