JS实现拖拽元素时与另一元素碰撞检测

 更新时间:2020年08月27日 10:03:12   作者:aiguangyuan  
这篇文章主要为大家详细介绍了JS实现拖拽元素时与另一元素碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文给大家分享一个用原生JS实现拖拽元素时与另个一元素碰撞检测的小Demo,效果如下:

实现代码如下, 欢迎大家复制粘贴。

<!DOCTYPE html>
<html>
 
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>原生JS实现拖拽元素时与另个一元素碰撞检测</title>
  <style>
    #div1 {
      width: 100px;
      height: 100px;
      background: red;
      position: absolute;
      z-index: 2;
    }
 
    #div2 {
      width: 100px;
      height: 100px;
      background: yellow;
      position: absolute;
      left: 230px;
      top: 220px;
      z-index: 1;
    }
  </style>
  <script>
    window.onload = function () {
      var oDiv = document.getElementById('div1');
      var oDiv2 = document.getElementById('div2');
      // 鼠标按下时
      oDiv.onmousedown = function (ev) {
 
        var oEvent = ev || event;
        var disX = oEvent.clientX - oDiv.offsetLeft;
        var disY = oEvent.clientY - oDiv.offsetTop;
        // 鼠标移动时
        document.onmousemove = function (ev) {
 
          var oEvent = ev || event;
 
          oDiv.style.left = oEvent.clientX - disX + 'px';
          oDiv.style.top = oEvent.clientY - disY + 'px';
 
          var l1 = oDiv.offsetLeft;
          var r1 = oDiv.offsetLeft + oDiv.offsetWidth;
          var t1 = oDiv.offsetTop;
          var b1 = oDiv.offsetTop + oDiv.offsetHeight;
 
          var l2 = oDiv2.offsetLeft;
          var r2 = oDiv2.offsetLeft + oDiv2.offsetWidth;
          var t2 = oDiv2.offsetTop;
          var b2 = oDiv2.offsetTop + oDiv2.offsetHeight;
 
          // 碰撞检测的规则
          if (r1 < l2 || l1 > r2 || b1 < t2 || t1 > b2) {
            // 如果没有碰到
            oDiv2.style.background = 'yellow';
 
          } else {
            // 如果碰到了
            oDiv2.style.background = 'green';
          }
        };
        // 鼠标抬起时
        document.onmouseup = function () {
 
          document.onmousemove = null;
          document.onmouseup = null;
        };
      };
    };
  </script>
</head>
 
<body>
  <div id="div1"></div>
  <div id="div2"></div>
</body>
 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 

相关文章

  • javascript中for...of和for..in循环的区别

    javascript中for...of和for..in循环的区别

    JS中循环语句众多,你是否也有用的时候突然不知道用哪个的经历,本文主要介绍了javascript中for...of和for..in循环的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • JavaScript 数组遍历的五种方法

    JavaScript 数组遍历的五种方法

    这篇文章主要介绍了JavaScript 数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下
    2021-03-03
  • antd table长表格出现滚动条的操作方法

    antd table长表格出现滚动条的操作方法

    这篇文章主要介绍了antd table长表格如何出现滚动条,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 深入浅出理解javaScript原型链

    深入浅出理解javaScript原型链

    这篇文章主要介绍了对javaScript原型链的理解,以实例形式对javaScript原型链的概念及相关使用技巧做了较为浅显易懂的分析,需要的朋友可以参考下
    2015-05-05
  • js排序与重组的实例讲解

    js排序与重组的实例讲解

    下面小编就为大家带来一篇js排序与重组的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JavaScript检查数据中是否存在相同的元素(两种方法)

    JavaScript检查数据中是否存在相同的元素(两种方法)

    这篇文章主要介绍了JavaScript检查数据中是否存在相同的元素(两种方法),需要的朋友可以参考下
    2018-10-10
  • 使用PDFJS遇到的坑及解决办法记录

    使用PDFJS遇到的坑及解决办法记录

    PDF.js是由Mozilla支持的基于HTML5的PDF查看器,可以在web上解析和呈现PDF文件,它支持内容检索、页面跳转、文件打印等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • js两个数组合并去重的方法大全

    js两个数组合并去重的方法大全

    这篇文章主要给大家介绍了关于js两个数组合并去重的相关资料,日常开发中经常会用到的JS数组去重,文中将每种方法都给出了代码示例,需要的朋友可以参考下
    2023-09-09
  • 微信小程序实现的点击按钮 弹出底部上拉菜单功能示例

    微信小程序实现的点击按钮 弹出底部上拉菜单功能示例

    这篇文章主要介绍了微信小程序实现的点击按钮 弹出底部上拉菜单功能,结合实例形式分析了action-sheet组件及事件响应简单使用技巧,需要的朋友可以参考下
    2018-12-12
  • 使用Javascript接收get传递的值的代码

    使用Javascript接收get传递的值的代码

    用js获取页面值得仿佛,需要的朋友可以参考下。
    2011-11-11

最新评论