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 相关文章推荐
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
Aug 15 Javascript
探索Vue.js component内容实现
Nov 03 Javascript
js点击任意区域弹出层消失实现代码
Dec 27 Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 Javascript
微信小程序实现评论功能
Nov 28 Javascript
VUE安装使用教程详解
Jun 03 Javascript
mock.js模拟数据实现前后端分离
Jul 24 Javascript
vue中destroyed方法的使用说明
Jul 21 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
js中判断控件是否存在
2010/08/25 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
微信跳一跳辅助python代码实现
2018/01/05 Python
python实现logistic分类算法代码
2020/02/28 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
python collections模块的使用
2020/10/16 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
什么是接口(Interface)?
2013/02/01 面试题
介绍一下except的用法和作用
2015/01/22 面试题
简历的个人自我评价范文
2014/01/03 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
芙蓉镇观后感
2015/06/10 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
Python进行区间取值案例讲解
2021/08/02 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技
python神经网络 使用Keras构建RNN训练
2022/05/04 Python