用js写一个鼠标跟随的回弹效果(有固定区域)

<style>
.list li .tops_pic {
    position: relative;
    transition: all 1.5s;
    height: 100px;
    line-height: 100px;
}
</style>
<div class="list contents">
            <ul class="ul">
              <li>
                <div class="tops_pic" onmousemove="DisplayCoord(event,this)" onmouseleave="DisplayNone(event,this)"><img src="../uploadfiles/brand/1.png" alt=""></div>
              </li>
              <li>
                <div class="tops_pic" onmousemove="DisplayCoord(event,this)" onmouseleave="DisplayNone(event,this)"><img src="../uploadfiles/brand/2.png" alt=""></div>
              </li>
              <li>
                <div class="tops_pic" onmousemove="DisplayCoord(event,this)" onmouseleave="DisplayNone(event,this)"><img src="../uploadfiles/brand/3.png" alt=""></div>
              </li>
            </ul>
          mp_x  mp_y 用来获取值
            <div id="mp_x" style="display: none"></div>
            <div id="mp_y" style="display: none"></div>
          </div>
function getX(obj){  
    var parObj=obj;    
    var left=obj.offsetLeft;    
    while(parObj=parObj.offsetParent){    
        left+=parObj.offsetLeft;    
    }    
    return left;    
}    

function getY(obj){    
    var parObj=obj;    
    var top=obj.offsetTop;    
    while(parObj = parObj.offsetParent){    
        top+=parObj.offsetTop;    
    }    
 return top;    
}    

function DisplayCoord(event,es){    
        var top,left,oDiv;    
    oDiv=document.getElementById("move1");    
    console.log($(es)[0]);
    top=getY($(es)[0]);    
    left=getX($(es)[0]);    
    $(es).css({"transform":"matrix(1, 0, 0, 1, "+(Math.abs(event.clientX-left+document.documentElement.scrollLeft)-60)+", "+(Math.abs(event.clientY-top+document.documentElement.scrollTop)-35)+")","transform-origin":"0px -500px 0px"})
    document.getElementById("mp_x").innerHTML = (Math.abs(event.clientX-left+document.documentElement.scrollLeft)-60);    
    document.getElementById("mp_y").innerHTML = (Math.abs(event.clientX-left+document.documentElement.scrollLeft)-60);       
    //注意:这里的60和35为盒子宽高的一半
}  
function DisplayNone(event,es){
    var istrue=true;
    var s=$('#mp_x').text();
    var y=$('#mp_y').text();
  var iTimer = setInterval(function() {
       s=s-4;
    if ( s-2<= 0) {
        s=0;
        y=0;
        clearInterval(iTimer);
    }
    y=y-3;
    if(y<=0){
        s=0;
        y=0;
        clearInterval(iTimer);
    }
    if(istrue){
      $(es).css({"transform":"matrix(1, 0, 0, 1, "+-parseInt(s)+", "+-parseInt(y)+")","transform-origin":"center"});
      istrue=false;
    }else{
      $(es).css({"transform":"matrix(1, 0, 0, 1, "+parseInt(s)+", "+parseInt(y)+")","transform-origin":"center"});
      istrue=true;
    }
  }, 200);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值