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 相关文章推荐
jquery tab标签页的制作
May 10 Javascript
js实现日期级联效果
Jan 23 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
vue过渡和animate.css结合使用详解
Jun 14 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 Javascript
electron踩坑之remote of undefined的解决
Oct 06 Javascript
微信小程序实现音乐播放页面布局
Dec 11 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原理之异常机制
2010/08/21 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
Python实现读取文件最后n行的方法
2017/02/23 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
JSF如何进行表格处理及取值
2012/08/06 面试题
应届毕业生个人自我评价
2013/09/20 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
京剧自荐信
2014/01/26 职场文书
美德好少年主要事迹
2014/01/29 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python