纯原生js实现实现放大镜特效

纯原生js实现实现放大镜特效

**先上效果图

接下来是html概览,因为要通过js去操作dom做特效需要在html里拿到id或class

js代码实现

 window.addEventListener('load',function(){
 ​
   var box=document.querySelector('.img');
 ​
   var move=document.querySelector('.move');
 ​
   var big=document.querySelector('.big');
 ​
   //鼠标的进出去决定盒子的出现
 ​
   box.addEventListener('mouseover',function(){
 ​
 •    move.style.display='block';
 ​
 •    big.style.display='block';
 ​
 •    box.addEventListener('mouseout',function(){
 ​
 •      move.style.display='none';
 ​
 •      big.style.display='none';
 ​
 •    })
 ​
   })
 ​
   //鼠标跟随
 ​
    box.addEventListener('mousemove',function(e){//这里的e为event事件的缩写,用操作对象
 //的回调来做形参
 •    var x=e.pageX-this.offsetLeft;
 ​
 •    var y=e.pageY-this.offsetTop;
 ​
 •    moveX=x-move.offsetWidth/2;
 ​
 •    moveY=y-move.offsetHeight/2;
 ​
 •    console.log(box.offsetWidth-move.offsetWidth);
 ​
 •    //让move只能在盒子范围内移动
 ​
 •    if(moveX<=0){
 ​
 •      moveX=0;
 ​
 •    }else if(moveX>=box.offsetWidth-move.offsetWidth){
 ​
 •      moveX=box.offsetWidth-move.offsetWidth;
 ​
 •    }
 ​
 •    if(moveY<=0){
 ​
 •      moveY=0;
 ​
 •    }else if(moveY>=box.offsetHeight-move.offsetHeight){
 ​
 •      moveY=box.offsetHeight-move.offsetHeight;
 ​
 •    }
 ​
 •    move.style.left=moveX+'px';
 ​
 •    move.style.top=moveY+'px';
 ​
 •    movemax=box.offsetWidth-move.offsetWidth;
 ​
 •    //大图的移动,按比例移动
 ​
 •    var b=document.querySelector('.b');
 ​
 •    var bMax=b.offsetWidth-big.offsetWidth;
 ​
 •    console.log(bMax);
 ​
 •    var bX=moveX*bMax/movemax;
 ​
 •    var bY=moveY*bMax/movemax;
 //大图的移动方向应该与鼠标相反,所以是-bx,-by
 •    b.style.marginLeft=(-bX+'px');
 ​
 •    b.style.marginTop=(-bY+'px');
 ​
    })   
 ​
 ​
 ​
 })
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值