[前端练习小Demo]图片放大镜效果

Posted wq-study

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[前端练习小Demo]图片放大镜效果相关的知识,希望对你有一定的参考价值。

最终效果展示:

 

JS部分:

window.onload=function(){
   var normal = document.getElementById(‘normal‘);
   var lay = document.getElementById("lay");
   var bigImg = document.getElementById("bigImg");
   var img = bigImg.getElementsByTagName(‘img‘)[0];
   
   normal.onmouseover=function(){  //鼠标移入事件
      lay.style.display="block";
      bigImg.style.display="block";
   }
   normal.onmouseout=function(){  //鼠标移出事件
      lay.style.display="none";
      bigImg.style.display="none";
   }
   
   normal.onmousemove=function(){ //鼠标移动事件
      var ev=ev||event;
      var scale=4;                //放大比例
      var x=ev.clientX-lay.offsetWidth/2-normal.offsetLeft;//放大镜左边框距离父盒子左边框的距离
      var y=ev.clientY-lay.offsetHeight/2-normal.offsetTop;//放大镜上边框距离父盒子上边框的距离
      if(x<0){
         x=0
      }
      if(x>normal.offsetWidth-lay.offsetWidth){
         x=normal.offsetWidth-lay.offsetWidth;
      }
      if(y<0){
         y=0
      }
      if(y>normal.offsetHeight-lay.offsetHeight){
         y=normal.offsetHeight-lay.offsetHeight
      }
      lay.style.width=parseInt(normal.offsetWidth/scale)+‘px‘;//放大镜宽
      lay.style.height=parseInt(normal.offsetHeight/scale)+‘px‘;//放大镜高
      img.style.width=normal.offsetWidth*scale+‘px‘;//放大以后的图片宽
      img.style.height=normal.offsetHeight*scale+‘px‘;//放大以后的图片高
      
      lay.style.left=x+‘px‘;//放大镜跟着光标移动
      lay.style.top=y+‘px‘;
      
      var left=scale*lay.offsetLeft;
      var top=scale*lay.offsetTop;
      img.style.left= -left+‘px‘;//放大后的图片需要移动的坐标
      img.style.top= -top+‘px‘;
   }
}

 

以上是关于[前端练习小Demo]图片放大镜效果的主要内容,如果未能解决你的问题,请参考以下文章

[前端练习小Demo]分别用jquery和vue实现轮播图

小5聊纯javascript实现图片放大镜效果

前端特效-Javascript实现购物页面图片放大效果

使用js实现简单放大镜的效果

前端放大镜的实现效果

swift3.0 图片放大缩小动画效果