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 相关文章推荐
javascript 面向对象编程 聊聊对象的事
Sep 17 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 Javascript
来自国外的页面JavaScript文件优化
Dec 08 Javascript
浅析return false的正确使用
Nov 04 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
Apr 17 Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
微信小程序利用button控制条件标签的变量问题
Mar 15 Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 Javascript
微信小程序实现加入购物车滑动轨迹
Nov 18 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
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
javascript 定义初始化数组函数
2009/09/07 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
Python的词法分析与语法分析
2013/05/18 Python
在python中的socket模块使用代理实例
2014/05/29 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
python实现求特征选择的信息增益
2018/12/18 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
flask应用部署到服务器的方法
2019/07/12 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
护士自我介绍信
2014/01/13 职场文书
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
入股协议书
2014/04/14 职场文书
一年级学生评语大全
2014/04/21 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
Apache自带的ab压力测试工具的实现
2022/07/23 Servers