JS小练习之鼠标事件——让物体跟随鼠标移动

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>鼠标事件</title>
    <style>
    #div1{
      width: 100px;
      height: 200px;
      position: absolute;
      background: red;
    }
    </style>
    <script type="text/javascript">
    //实现:鼠标移动到哪里,物体就跟着移动到哪里
    // document.οnmοusemοve=function(ev){
    //   var oEvent=ev||event;
    //   var oDiv=document.getElementById('div1');
    //   var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
    //
    //   oDiv.style.left=oEvent.clientX+'px';
    //   oDiv.style.top=oEvent.clientY+scrollTop+'px';
    // };

    //将以上获取鼠标位置的方法封装成函数
    function getPos(ev){
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;

        return{x:ev.clientX+scrollLeft,y:ev.clientY+scrollTop};
    }

    document.οnmοusemοve=function(ev){
      var oEvent=ev||event;
      var oDiv=document.getElementById('div1');
      var pos=getPos(oEvent);

      oDiv.style.left=pos.x+'px';
      oDiv.style.top=pos.y+'px';
    };

    </script>
  </head>
  <!-- 在style="height:2000px;"没有加之前,物体能够很好的跟随鼠标移动,并且鼠标贴在物体的左上顶点,
       即使滑动也没关系,加了之后,鼠标滚动就会导致鼠标与物体之间出现距离,出现这个的原因在于:clientX
       clientY都是指可见区域的坐标,在没加style="height:2000px;"之前可见区域与整个页面的区域重合,
       就不会出现问题;解决办法:使用scrollTop来获取当前页面滚动条的纵坐标的位置+clientY就是物体的真正的高了
   -->
  <body style="height:2000px;">
    <div id='div1'></div>

  </body>
</html>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值