html中通过js鼠标移动元素教程之最清晰的重复性移动元素代码

我的教程中的知识点功能必须强大代码也尽量最少,注释最多让学习者更容易懂

你们可以删除注释后直接添加到你的网页上,我也希望你能了解一下,我的注释是为了你的学习而不是你删除后直接添加的代码

<!DOCTYPE html>
 <html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script language="JavaScript" type="text/javascript">
    /*function用来声明函数的*/
      function moveObj(obj) {
          /*obj是谁调用函数的并传了自己,那这个obj就是那个元素*/
        obj.style.cursor = "move";
        /*cursor是光标
        url    需使用的自定义光标的 URL。
        注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标。
        default    默认光标(通常是一个箭头)
        auto    默认。浏览器设置的光标。
        crosshair    光标呈现为十字线。
        pointer    光标呈现为指示链接的指针(一只手)
        move    此光标指示某对象可被移动。
        e-resize    此光标指示矩形框的边缘可被向右(东)移动。
        ne-resize    此光标指示矩形框的边缘可被向上及向右移动(北/东)。
        nw-resize    此光标指示矩形框的边缘可被向上及向左移动(北/西)。
        n-resize    此光标指示矩形框的边缘可被向上(北)移动。
        se-resize    此光标指示矩形框的边缘可被向下及向右移动(南/东)。
        sw-resize    此光标指示矩形框的边缘可被向下及向左移动(南/西)。
        s-resize    此光标指示矩形框的边缘可被向下移动(北/西)。
        w-resize    此光标指示矩形框的边缘可被向左移动(西)。
        text    此光标指示文本。
        wait    此光标指示程序正忙(通常是一只表或沙漏)。
        help    此光标指示可用的帮助(通常是一个问号或一个气球)。
        */
        /*当obj这个元素被鼠标点击的时候触发执行无名函数*/
        obj.onmousedown = function(e) {
          obj.style.position = "absolute";/*将位置设置为absolute(绝对定位)*/
          var drag_x  = 0;/*记录鼠标按下的x位置*/
          var drag_y  = 0;/*记录鼠标按下的y位置*/
          var draging = true;/*用于判断鼠标是否被按下*/
          var left    = obj.offsetLeft;/*返回当前元素的相对水平偏移位置的偏移容器*/
          var top     = obj.offsetTop;/*返回当前元素的相对垂直偏移位置的偏移容器*/
          if(typeof document.all !== "undefined") {   //IE
             drag_x = event.clientX;/*clientX 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标。客户区指的是当前窗口。*/
            drag_y = event.clientY;/*clientY 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(客户区)的垂直坐标。 客户区指的是当前窗口。*/
            /*当鼠标移动时调用无名函数*/
            document.onmousemove = function(e) {
              if(draging === false) return false;/*当draging为假(false)赋值为假*/
              obj.style.left = left + event.clientX - drag_x + "px";/*他自己的x偏移的位置加上鼠标的位置x减去点击的位置(他自己的位置加上移动距离值等于他的新位置*/
              obj.style.top  = top + event.clientY - drag_y + "px"/*他自己的y偏移的位置加上鼠标的位置y减去点击的位置(他自己的位置加上移动距离值等于他的新位置*/
            }
          } else {    //FF,Chrome,Opera,Safari
             drag_x = e.pageX;/*event.pageX 属性返回鼠标指针的位置,相对于文档的左边缘。提示:该事件属性通常与 event.pageY 属性一起使用。*/
            drag_y = e.pageY;
            /*当鼠标移动时调用无名函数*/
            document.onmousemove = function(e) {
              if (draging === false) return false;
              obj.style.left = left + e.pageX - drag_x + "px";
              obj.style.top  = top + e.pageY - drag_y + "px"
            }
          }
          document.onmouseup = function() { draging = false; };/*当鼠标取消点击时执行*/
        }
      }
    </script>
  </head>
  <body>
    <!--
    this:通常为父级
    例如:孩子继承了爸爸的属性,就等于继承了父亲的天赋,但是孩子自己也有自己的天赋,我们想要使用父亲继承来的天赋就要使用this
    当没有父亲的时候,this就是自己
    -->
    <div style="background-color:#BB484A; width:200px; height:30px;" οnmοuseοver="moveObj(this)">这个是可以拖动的层1</div>
    <!--
    onmouseover事件会在鼠标指针移动到指定的元素上时发生。
    moveObj(this)当鼠标移到某个元素上时,就会调用这个moveObj函数,同时this是把自己当成参数给了这个函数
    -->
    <div style="background-color:#2B36FF; width:200px; height:30px;" οnmοuseοver="moveObj(this)">这个是可以拖动的层2</div>
    <!--
    两个同样的函数和参数,他们会不会冲突,移动某个元素后另一个元素会不会移动呢?
    当然不会,因为参数是他自己,也就只有他自己可以移动,为什么呢?同样的函数应该来说是会调用的,原因是onmouseover
    这个关键字的作用是什么?上面有说,当鼠标没有移动到这个元素上时就不会调用moveObj函数,那个移动到就调用那个?明白了吗?
    -->
  </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值