放大镜效果

放大镜效果的html 部分:

<div id="div1">
  <img src="img/m1.jpg" />
  <span id="mask"></span>
</div>
<div id="div2">
  <img src="img/b1.jpg" />
</div>

两张一样的图片,一张大图,一张小图,两张图片的比例要合适

 

放大镜效果的JS部分:

 

<script>
window.onload=function(){
  var oDiv1 = document.getElementById('div1');
  var oDiv2 = document.getElementById('div2');
  var oMask = document.getElementById('mask');
  var oImg = oDiv2.getElementsByTagName('img')[0];
  

  //鼠标划过div1时小黄框和div2框显示
  oDiv1.onmouseover=function(){
    oDiv2.style.display='block';
    oMask.style.display='block';
  };

  //鼠标离开的时候小黄框和div2隐藏
  oDiv1.onmouseout=function(){
    oDiv2.style.display='none';
    oMask.style.display='none';
  };
  //小黄框在div1里移动的时候
  oDiv1.onmousemove=function(ev){
    var oEvent = ev||event;
    var l = oEvent.clientX-oDiv1.offsetLeft-oMask.offsetWidth/2;
    var t = oEvent.clientY-oDiv1.offsetTop-oMask.offsetHeight/2;
    

    //判断小黄框在DIV1里移动,不移到外面去,l 是判断左右t 判断上下
    if(l<0){
      l=0;
    }else if(l>oDiv1.offsetWidth-oMask.offsetWidth){
      l=oDiv1.offsetWidth-oMask.offsetWidth;
    }

    if(t<0){
      t=0;
    }else if(t>oDiv1.offsetHeight-oMask.offsetHeight){
      t=oDiv1.offsetHeight-oMask.offsetHeight;
    }
    oMask.style.left=l+"px";

    oMask.style.top=t+"px";

    //算比例,小黄块移动的比例与右边图片的比例相同
    oImg.style.left=-l/(oDiv1.offsetWidth-oMask.offsetWidth)*(oImg.offsetWidth-oDiv2.offsetWidth)+"px";

    oImg.style.top=-t/(oDiv1.offsetHeight-oMask.offsetHeight)*(oImg.offsetHeight-oDiv2.offsetHeight)+"px";

  };
};
</script>

 

总结:

感觉有两大难点

1,就是距离的算法

2,图片比例的算法

posted @ 2014-11-18 21:46  jinzhu4147  阅读(175)  评论(0编辑  收藏  举报