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 相关文章推荐
Prototype源码浅析 String部分(四)之补充
Jan 16 Javascript
javascript常用方法总结
May 14 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
Mar 29 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
bootstrap模态框示例代码分享
May 17 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
npm 下载指定版本的组件方法
May 17 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
浅谈vue父子组件怎么传值
Jul 21 Javascript
es6函数之尾调用优化实例分析
Apr 25 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
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
Prototype Class对象学习
2009/07/19 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python实现读取并保存文件的类
2017/05/11 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
python读取Kafka实例
2019/12/23 Python
Python实现搜索算法的实例代码
2020/01/02 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
Java面试题及答案
2012/09/08 面试题
施工人员岗位职责
2013/12/12 职场文书
作文评语集锦大全
2014/04/23 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
2014年居委会工作总结
2014/12/09 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
保护环境的宣传语
2015/07/13 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
学校隐患排查制度
2015/08/05 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书