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


Posted in Javascript onAugust 27, 2020

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

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

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

<!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 相关文章推荐
css把超出的部分显示为省略号的方法兼容火狐
Jul 23 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
jQuery中:contains选择器用法实例
Dec 30 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
JS Select下拉框(支持输入模糊查询)
Feb 04 Javascript
JavaScript实现分页效果
Mar 28 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 jQuery
区别JavaScript函数声明与变量声明
Sep 12 Javascript
Web安全之XSS攻击与防御小结
Dec 13 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
JavaScript函数重载操作实例浅析
May 02 Javascript
js实现QQ邮箱邮件拖拽删除功能
Aug 27 #Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 #Javascript
javascript操作向表格中动态加载数据
Aug 27 #Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 #Javascript
js实现批量删除功能
Aug 27 #Javascript
js利用拖放实现添加删除
Aug 27 #Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 #jQuery
You might like
PHP的FTP学习(一)
2006/10/09 PHP
php框架Phpbean说明
2008/01/10 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
JavaScript高级程序设计
2006/12/29 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python argparse模块使用方法解析
2020/02/20 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Python 串口通信的实现
2020/09/29 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
卫生巾广告词
2014/03/18 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
食堂卫生管理制度
2015/08/04 职场文书
教师远程培训心得体会
2016/01/09 职场文书