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 一个自定义长度的文本自动换行的函数
Aug 19 Javascript
Javascript学习笔记4 Eval函数
Jan 11 Javascript
jquery五角星评分插件示例分享
Feb 21 Javascript
javascript二维数组转置实例
Jan 22 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 Javascript
Express的路由详解
Dec 10 Javascript
JavaScript:Array类型全面解析
May 19 Javascript
js基础之DOM中元素对象的属性方法详解
Oct 28 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
设置cookie指定时间失效(实例代码)
May 28 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
Dec 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
从手册去理解分析PHP session机制
2011/07/17 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
js中有关IE版本检测
2012/01/04 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
全面了解python字符串和字典
2016/07/07 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
后勤人员岗位职责
2013/12/17 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
优秀求职信
2014/05/29 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
信用卡工作证明模板
2014/09/14 职场文书
学位证书委托书
2014/09/30 职场文书
详解Python牛顿插值法
2021/05/11 Python
Python集合的基础操作
2021/11/01 Python